View组件添加边框

最近做项目的时候,恰好遇到给TextureView添加边框(专业名词为描边),因此查了一下相关资料。

网上有三种解决方案:

1.设置一个9 patch 的,右边框,中间是空的PNG。

2.自定义一个View,用Canvas画个边框。

3.用Android提供的ShapeDrawable来定义一个边框。

个人比较建议采用第三种方式,原因是因为第三种只要写XML,速度快,占用资源小,代码编写量也少,便于维护。

使用方法如下:

1.定义一个background.xml文件。


<?xml version="1.0" encoding="UTF-8"?>  
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke 
    android:width="2dp" 
    android:color="#0000AA" />    
</shape> 

2.在View的src设置背景时使用就可以了。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"  
        android:layout_height="match_parent" 
        android:gravity="center"
        android:src="@drawable/background"
        android:padding="2dp">  
        <TextureView          
            android:layout_width="match_parent"                              
            android:layout_height="match_parent"/>
        <com.android.camera.ui.RotateLayout
            android:layout_width="wrap_content"
            android:layout_width="wrap_content">
            <TextView
                 android:layout_width="wrap_content"
                 android:layout_width="wrap_content"
                 android:textColor="#FFFFFF"
                 android:textSize="22sp"
                 android:background="#0000000"/>
       </com.android.camera.ui.RoateLayout>
</RelativeLayout>
需要注意的是我给TextureView的父容器RelativeLayout设置了Drawable,并设置了Padding。

当然Android提供了比较丰富的resource,对于XML定义Drawable可以参考官方文档的Shape Drwable一节。

http://developer.android.com/guide/topics/resources/drawable-resource.html

你可能感兴趣的:(android,view,边框)