自定义视图视图高级UI

实现一个类似登录页面输入框-EditText底部线条+光标颜色修

2019-07-17  本文已影响2人  NewNiu

我们先看一个要实现的效果


上面这个样子的效果就是我们要实现的EditText编辑框底部线条效果,光标颜色修改一会再看。


新建一个xml文件,随便命名一下放到drawable目录下

我这里取名:et_line_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
    <item
        android:left="-2dip"
        android:right="-2dip"
        android:top="-2dip">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke
                android:width="1dip"
                android:color="@color/_3e7292"
                android:dashGap="0dp"
                android:dashWidth="0dip" />
        </shape>
    </item>

</layer-list>

看一下实现的效果:


代码生成效果

你没看错,那个红线是我加的,截图时候留下的!
到这里,我们就可以直接用了。

<EditText
        android:id="@+id/et_comments"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/tv_send"
        android:background="@drawable/et_line_bg"
        android:imeOptions="flagNoExtractUi|actionNone"
        android:maxLength="140"
        android:maxLines="5"
        android:textColor="@color/_2f2f2f"
        android:textSize="16sp"
        tools:text="" />

到此->该功能算是完成了!

修改光标颜色

在有的时候,系统提供的默认光标颜色便利我们的界面不太美观或不匹配我们自己界面风格,这里教大家通过反射机制修改颜色。let's go!!

// 获取咱们的EditText组件
EditText et = findViewBuId(R.id.et_comments);
// 反射设置
try {
    Field f = TextView.class.getDeclaredField("mCursorDrawableRes");
    f.setAccessible(true);// 设置私有变量可以被访问
    f.set(et,R.drawable.shape_text_cursor);
} catch (NoSuchFieldException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
}

这里要设置的颜色或样式可以在drawable目录中添加shape文件里面定义

// shape_text_cursor.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="@color/_3e7292"/>

    <size android:width="2dp" />

</shape>

个人的一点笔记,仅供日后参考使用,如有问题,还请不吝赐教!

上一篇下一篇

猜你喜欢

热点阅读