zoukankan      html  css  js  c++  java
  • EditText之边框颜色

    EditText的自带属性里没有设置边框颜色的

    有俩种方式可以达到效果

    一种是网上比较推崇的用图作背景,另一种则是自绘

    图作背景的

      首先重新定义一个style。在values文件夹下新建一个style.xml文件:

           <?xml version="1.0" encoding="utf-8"?>

             <resources>

                <style name="my_edittext_style" parent="@android:style/Widget.EditText">

                    <item name="android:background">@drawable/my_edittext</item>

                </style>

             </resources>

    接下来在drawable里添加my_edittext.xml:内容如下

    <?xml version="1.0" encoding="utf-8"?>          <selector xmlns:android="http://schemas.android.com/apk/res/android">               <item android:state_focused="true" android:drawable="@drawable/editbox_focus" />      <item android:drawable="@drawable/editbox_normal" />

             </selector>

         其中editbox_normal为正常情况下的编辑框图片,editbox_focus为选中下的编辑框图片

    定义好了这两个文件之后就可以用以下方式使用:

        <EditText

          style="@style/my_edittext_style"

          android:text="My EditText"

          android:layout_width="fill_parent"

          android:layout_height="wrap_content">

        </EditText>

       以上用图做背景的部分是引用http://blog.csdn.net/a570056568/archive/2011/02/12/6180872.aspx里的

         PS:图最好用九宫图 这样会自适应的

    自绘的方式:   ???

       先自定义一个EditText:

          package com.MyView;

          import android.content.Context;

          import android.graphics.Canvas;

          import android.graphics.Color;

          import android.graphics.Paint;

          import android.graphics.RectF;

          import android.graphics.Paint.Style;

          import android.util.AttributeSet;

          import android.widget.EditText;

          public class MyEditText extends EditText{

             public MyEditText(Context context, AttributeSet attrs) {

                super(context, attrs);

             }

           @Override

           protected void onDraw(Canvas canvas) {

              Paint paint = new Paint();

              paint.setStyle(Style.STROKE);

              paint.setStrokeWidth(2);

              if(this.isFocused() == true)

                  paint.setColor(Color.parseColor("#122e29"));

            else

                 paint.setColor(Color.rgb(0,173,173));

            canvas.drawRoundRect(new RectF(2+this.getScrollX(), 2+this.getScrollY(), this.getWidth()-3+this.getScrollX(), this.getHeight()+ this.getScrollY()-1), 3,3, paint);

            super.onDraw(canvas);

         }

       }

    xml里引用:

        <View

           android:id="@+id/view"

           android:focusable ="true"   

           android:gravity="center"

           android:layout_x = "12dip"

           android:layout_y = "402dip"

           android:layout_width="104dip"

           android:layout_height="46dip"

           android:background = "#fffef9"

        />

        <com.MyView.MyEditText

           android:id="@+id/tv_state"

           android:focusable ="true"   

           android:gravity="center"

           android:layout_x = "10dip"

           android:layout_y = "400dip"

           android:layout_width="110dip"

           android:layout_height="50dip"

           android:background = "#00000000"//背景透明色

        />

    弄一个View在EditText下面的目的是设置输入框内部颜色,如果直接设置EditText背景色的话,圆角矩形那不太好处理,如果在onDraw里画背景色的话,这样光标就会不显示,被遮住了

  • 相关阅读:
    如何学习新技术
    创建模式之工厂方法模式
    SQL Server 存储过程
    ASP.NET Cache的一些总结
    ACE_TSS研究
    利用Thunk让C++成员函数变回调函数
    ACE内存映射学习
    ACE的初始化
    双检锁模式学习
    ACE_Task笔记
  • 原文地址:https://www.cnblogs.com/ejllen/p/3729636.html
Copyright © 2011-2022 走看看