如何更改默认EditText的样式

时间:2013-07-03 13:20:43

标签: android android-edittext

我正在使用这样的代码在我的xml文件中创建一个三个EditText。

<EditText
            android:id="@+id/name_edit_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/profile_image_view_layout"
            android:layout_centerHorizontal="true"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="20dp"
            android:ems="15"
            android:hint="@string/name_field"
            android:inputType="text" />

当我运行应用程序时,它在我的设备中看起来像这样。

enter image description here

但我想看看没有使用任何背景图片。

enter image description here

那怎么办呢?任何想法或建议都会有所帮助。

6 个答案:

答案 0 :(得分:37)

创建像edit_text_design.xml这样的xml文件并将其保存到drawable文件夹

我根据我的选择给出了颜色代码,请根据您的选择更改颜色代码!

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

<item>
    <shape>
        <solid android:color="#c2c2c2" />
    </shape>
</item>

<!-- main color -->
<item
    android:bottom="1.5dp"
    android:left="1.5dp"
    android:right="1.5dp">
    <shape>
        <solid android:color="#000" />
    </shape>
</item>

<!-- draw another block to cut-off the left and right bars -->
<item android:bottom="5.0dp">
    <shape>
        <solid android:color="#000" />
    </shape>
</item>

</layer-list>

您的编辑文字应将其包含在背景中:

android:background =“@ drawable / edit_text_design”添加到所有EditText的

以上的EditText现在应该如下所示:

      <EditText
        android:id="@+id/name_edit_text"
        android:background="@drawable/edit_text_design"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/profile_image_view_layout"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="20dp"
        android:ems="15"
        android:hint="@string/name_field"
        android:inputType="text" />

答案 1 :(得分:26)

您有几个选择。

  1. 使用Android assets studios Android Holo colors generator生成您需要添加到应用中的资源,样式和主题,以便在所有设备上显示全息图。

  2. 使用holo everywhere库。

  3. 将PNG用于全息文本字段并自行将其设置为背景图像。您可以从Android资产工作室全息颜色生成器获取图像。您必须制作一个drawable并定义正常,选定和禁用状态。

  4. 更新2016-01-07

    这个答案现在已经过时了。 Android现在可以直接调整API和控件主题的能力。关于如何设置样式或主题任何元素的一个很好的参考是一个名为materialdoc的网站。

答案 2 :(得分:9)

我在10分钟前解决了同样的问题,所以我会给你一个简短的有效修复: 将其放在应用程序标签或清单中:

 android:theme="@android:style/Theme.Holo"

还可以在布局的图形视图中将XML布局的主题设置为Holo。

如果您需要更改更复杂的主题内容,库将非常有用,但这个小修补程序将起作用,因此您可以继续使用您的应用程序。

答案 3 :(得分:5)

我使用下面的代码。检查它是否有帮助。

<?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="#00f" />
            <padding android:bottom="2dp" />
        </shape>
    </item>
    <item android:bottom="10dp">
        <shape android:shape="rectangle" >
            <solid android:color="#fff" />

            <padding
                android:left="2dp"
                android:right="2dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#fff" />
        </shape>
    </item>
</layer-list>

答案 4 :(得分:4)

edittext_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/edittext_pressed" android:state_pressed="true" /> <!-- pressed -->
    <item android:drawable="@drawable/edittext_disable" android:state_enabled="false" /> <!-- focused -->
    <item android:drawable="@drawable/edittext_default" /> <!-- default -->
</selector>

edittext_default.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="#BBDEFB" />
            <padding android:bottom="2dp" />
        </shape>
    </item>
    <item android:bottom="5dp">
        <shape android:shape="rectangle" >
            <solid android:color="#fff" />

            <padding
                android:left="0dp"
                android:right="0dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#fff" />
        </shape>
    </item>
</layer-list>

edittext_pressed.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="#00f" />
            <padding android:bottom="2dp" />
        </shape>
    </item>
    <item android:bottom="5dp">
        <shape android:shape="rectangle" >
            <solid android:color="#fff" />

            <padding
                android:left="0dp"
                android:right="0dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle" >
            <solid android:color="#fff" />
        </shape>
    </item>

</layer-list>

edittext_disable.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="#aaaaaa" />
                <padding android:bottom="2dp" />
            </shape>
        </item>
        <item android:bottom="5dp">
            <shape android:shape="rectangle" >
                <solid android:color="#fff" />

                <padding
                    android:left="0dp"
                    android:right="0dp" />
            </shape>
        </item>
        <item>
            <shape android:shape="rectangle" >
                <solid android:color="#fff" />
            </shape>
        </item>

    </layer-list>

没有九贴片Api 10+,它可以正常工作 enter image description here

答案 5 :(得分:0)

现在适用于AppCompatEditText

注意:我们需要使用 app:backgroundTint 而不是 android:backgroundTint

<android.support.v7.widget.AppCompatEditText
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:hint="Underline color change"
    app:backgroundTint="@color/blue_gray_light" />