繁体   English   中英

Android EditText底线颜色和主题更改

[英]Android EditText bottom line color and theme changes

你好,我需要删除edittext默认样式 从这张图片 我想从编辑文本焦点或普通编辑文本的两侧都删除所选部分,我只希望普通编辑文本上的简单黑线和焦点上的蓝线

我创建了1个xml:

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

        <item android:state_pressed="true"><shape android:shape="line">

                <!-- Draw a 2dp width border around shape -->
                <stroke android:width="1dp" android:color="@color/blue" />
            </shape>
               <!-- Overlap the left, top and right border using background color  -->
        <item
            android:bottom="1dp"
            >
            <shape android:shape="rectangle">
                <solid android:color="@color/white"/>
            </shape>
        </item> <!-- pressed -->
        </item>
        <item android:state_focused="true"><shape android:shape="rectangle">

                <!-- Draw a 2dp width border around shape -->
                <stroke android:width="1dp" android:color="@color/blue" />
            </shape></item>
     <!-- focused -->
        <item><shape android:shape="rectangle">

                <!-- Draw a 2dp width border around shape -->
                <stroke android:width="1dp" android:color="@color/orange" />
            </shape></item>
     <!-- default -->

    </selector>

但这给了我矩形,我只想要LINE @bottom

在drawable文件夹中创建新的xml文件。 可以说

A.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" /> <!--background color of box--> </shape> </item> <item android:top="-2dp" android:right="-2dp" android:left="-2dp"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:width="1dp" android:color="<Focus color>" /> <!-- color of stroke --> </shape> </item> </layer-list> 

可以说在drawable中创建另一个新的xml文件

B.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" /> <!--background color of box--> </shape> </item> <item android:top="-2dp" android:right="-2dp" android:left="-2dp"> <shape> <solid android:color="@android:color/transparent" /> <stroke android:width="1dp" android:color="#8AC42F" /> <!-- color of stroke --> </shape> </item> </layer-list> 

在drawable中创建另一个新的xml文件。 可以说

c.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/a"></item> <item android:drawable="@drawable/b"> </item> </selector> 

试试这个代码。

这是一个选择器文件。 必须将其作为edittext的背景。 选择器会根据其(编辑文本)状态自动在两个可绘制文件之间切换。

使用 EditText

<EditText
    android:id="@+id/id_Login_emal_et"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:background="@drawable/c"
    android:ems="10"
    android:padding="10dip"
    android:hint="Email"
    android:inputType="textEmailAddress"
    >

使用定义颜色的属性来为style.xml的应用程序主题中的colorControlActivatedcolorControlHighlightcolorControlNormal编辑文本。

<style name="Theme.App.Base" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorControlNormal">@color/blackColor</item>
    <item name="colorControlActivated">@color/blueColor</item>
    <item name="colorControlHighlight">@color/blueColor</item>
</style>

对不同的edittext状态使用Selector

<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_window_focused="false" android:state_enabled="true"
        android:drawable="@drawable/twitter_im_edittext_normal" />
  <item android:state_window_focused="false" android:state_enabled="false"
        android:drawable="@drawable/twitter_im_edittext_normal" />
  <item android:state_pressed="true" android:drawable="@drawable/twitter_im_edittext_normal" />
  <item android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/twitter_im_edittext_focused" />
  <item android:state_enabled="true" android:drawable="@drawable/twitter_im_edittext_normal" />
  <item android:state_focused="true" android:drawable="@drawable/twitter_im_edittext_focused" />
  <item android:drawable="@drawable/twitter_im_edittext_normal" />
</selector>

您的可绘制对象将是Jayanth示例:

<?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" /> <!--background color of box-->
        </shape>
    </item>

    <item
        android:top="-2dp"
        android:right="-2dp"
        android:left="-2dp">
        <shape>
            <solid android:color="@android:color/transparent" />
            <stroke
                android:width="1dp"
                android:color="#8AC42F" />  <!-- color of stroke -->
        </shape>
    </item>
</layer-list>

试试这个代码:

edit_text.xml

<EditText
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:id="@+id/edit_text"
        android:background="@drawable/custom_edit_text_black_line"
 />

将Xml文件放入Drawable文件夹(custom_edit_text_black_line.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/black" />

        </shape>
    </item>

    <item android:bottom="2dp">
        <shape android:shape="rectangle">
            <solid android:color="#ffffff" />
        </shape>
    </item>

    </layer-list>

将Xml文件放入Drawable文件夹(custom_edit_text_blue_line.xml)

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="@color/colorPrimaryDark" />

    </shape>
</item>

<item android:bottom="2dp">
    <shape android:shape="rectangle">
        <solid android:color="#ffffff" />
    </shape>
</item>

</layer-list>

然后在“活动”中编写以下代码:

 edit_text.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {

                if(hasFocus){

                         edit_text.setBackground(MainActivity.this.getResources().getDrawable(R.drawable.custom_edit_text_blue_line));
                } else{
                    edit_text.setBackground(MainActivity.this.getResources().getDrawable(R.drawable.custom_edit_text_black_line));
                }

            }
        });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM