android使用shape来绘制控件

来源:互联网 发布:成都景鑫云科技 知乎 编辑:程序博客网 时间:2024/05/19 16:21

在android中常使用shape来作为控件的背景,来实现对控件形状的设计

shape的文件 位于 drawable文件中  在drawable目录下 添加 任意文件名的xml文件(myshape.xml)

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

</shape>

一 绘制圆角(corners标签)

 一般文本框 可以绘制为带边框的圆角边框 默认的EditText没提供这样的演示 

<!--

            radius 设置4个角的半径 
                              其他 4个属性 分别可以单独设置4个角的半径
             solid 填充颜色 
    -->
    <corners
         android:radius="20dp" />
    <solid android:color="@android:color/holo_orange_light"/>

在 布局文件 EditText 设置背景色为当前的myshape

 <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="35dp"
        android:background="@drawable/myshap"
        android:hint="请输入密码" >
        <requestFocus />
    </EditText>

效果为:

    

二 修改边框的样式 

默认EditText为 下边框 有条线 样式如下:

  

如果需要替换该蓝色的线 可以通过shape绘制一条直线 替换它

myshape.xml文件如下:

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <!--

      solid 填充颜色为#97ec97

      size  设置宽度为1000dp 足够大  高度为 1dp的线

   -->

   <solid android:color="#97ec97"/>     
    <size  android:height="1dp"  android:width="1000dp" />

</shape>

在 布局文件 EditText 设置背景色为空(不要背景) 因为要画的是下边框  设置android:drawableBottom 为myshape

 <EditText
        android:id="@+id/editText1"
        android:layout_width="fill_parent"
        android:layout_height="35dp"
        android:background="@null"
        android:drawableLeft="@drawable/lock"
        android:drawableBottom="@drawable/myshap"   
        android:hint="请输入密码" >
        <requestFocus />
    </EditText>

效果如下:

  


三 全部标签的解释

1 内边距的举例

<padding android:left="50dp" android:top="50dp"
        android:right="10dp" android:bottom="30dp"/>

2 填充颜色
    <solid android:color="@android:color/holo_orange_light"/>



 3  如下表示 添加圆角 android:radius 为四个边的半径
    <corners android:radius="20dp"/>

 4  如下表示被绘制的图形的宽度和高度  如果绘制的是 文本框的背景 相当于是绘制的文本框的宽度和高度

  如果是绘制的某个边框  就相当于边框的宽度和长度
    <size android:width="1000dp" android:height="200dp"/>

 5  如下表示 描边  边框的颜色和边框的粗细
    <stroke  android:color="@android:color/holo_green_dark" android:width="10dp"/>



 如下表示渐变 android:startColor渐变的开始颜色   android:endColor渐变的结束颜色  android:angle表示渐变的角度

android:angle=0 表示从左往右渐变  逆时针算角度  比如 90度 就是 下往上渐变  180度就是从右往左渐变

    <gradient android:startColor="@android:color/holo_blue_bright" android:endColor="@android:color/holo_red_light"
         android:angle="90"
        />




0 0
原创粉丝点击