zoukankan      html  css  js  c++  java
  • android 为TextView添加边框

    今天需要在TextView上面添加一个边框,但是TextView本身不支持边框,所以只能采用其他方式,在网上查询了一下,主要有三种方式可以实现1.带有边框的透明图片2.使用xml的shape设置3继承TextView覆写onDraw方法。

    方法一:

    带有透明图片的背景图,这个没有什么好将的,自己制作一个就行 ,然后设置background就可以了

    方法二:

    通过shape来设置背景图片

    首先一个textview_border.xml文件放在drawable文件夹里面

        <?xml version="1.0" encoding="utf-8"?>  
        <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >  
           <solid android:color="#ffffff" />  
           <stroke android:width="1dip" android:color="#4fa5d5"/>  
        </shape>  

    为要添加边框的TextView添加一个background
    android:background="@drawable/textview_border" 

    方法三:

    编写一个继承TextView类的自定义组件,并在onDraw事件方法中画边框。

        package com.example.test;  
          
        import android.annotation.SuppressLint;  
        import android.content.Context;  
        import android.graphics.Canvas;  
        import android.graphics.Paint;  
        import android.util.AttributeSet;  
        import android.widget.TextView;  
          
        @SuppressLint("DrawAllocation")  
        public class BorderTextView extends TextView{  
          
            public BorderTextView(Context context) {  
                super(context);  
            }  
            public BorderTextView(Context context, AttributeSet attrs) {  
                super(context, attrs);  
            }  
            private int sroke_width = 1;  
            @Override  
            protected void onDraw(Canvas canvas) {  
                Paint paint = new Paint();  
                //  将边框设为黑色  
                paint.setColor(android.graphics.Color.BLACK);  
                //  画TextView的4个边  
                canvas.drawLine(0, 0, this.getWidth() - sroke_width, 0, paint);  
                canvas.drawLine(0, 0, 0, this.getHeight() - sroke_width, paint);  
                canvas.drawLine(this.getWidth() - sroke_width, 0, this.getWidth() - sroke_width, this.getHeight() - sroke_width, paint);  
                canvas.drawLine(0, this.getHeight() - sroke_width, this.getWidth() - sroke_width, this.getHeight() - sroke_width, paint);  
                super.onDraw(canvas);  
            }  
        }  

    效果图如下:

    使用的Xml布局内容如下:

        <?xml version="1.0" encoding="utf-8"?>  
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
            android:layout_width="match_parent"  
            android:layout_height="match_parent" >  
              
            <TextView   
                android:layout_width="120dp"  
                android:layout_height="80dp"  
                android:background="@drawable/textview_border"  
                android:text="方法二"  
                android:textColor="#FF000000"  
                android:id="@+id/test"  
                android:gravity="center"  
                android:layout_alignParentTop="true"  
                android:layout_marginTop="20dp"  
                android:layout_centerHorizontal="true"  
                />  
          
            <com.example.test.BorderTextView  
                 android:layout_width="120dp"  
                android:layout_height="80dp"  
                 android:text="方法三"  
                 android:id="@+id/test3"  
                 android:gravity="center"  
                 android:layout_alignParentBottom="true"  
                 android:layout_marginBottom="20dp"  
                  android:layout_centerHorizontal="true"  
                ></com.example.test.BorderTextView>  
        </RelativeLayout>  
  • 相关阅读:
    POJ 1163 状态转移
    POJ 1143 记忆化搜索+博弈论
    POJ 1083
    POJ 1018
    HDU 3572 Dinic
    HDU 3549 Dinic
    配置JDK环境变量配置及path和classpath的作用
    frameset 框架整体退出登录的问题
    java计算时间差及比较时间大小(转)
    Android—Http连接之GET/POST请求
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/4757227.html
Copyright © 2011-2022 走看看