32

我正在EditText使用如下代码在我的 xml 文件中创建三个 s:

<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" />

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

在此处输入图像描述

但我希望它看起来像这样,而不使用任何背景图像:

在此处输入图像描述

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

4

6 回答 6

39

创建像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" />
于 2013-07-03T13:35:11.977 回答
29

你有几个选择。

  1. 使用Android assets studios Android Holo 颜色生成器生成您需要添加到应用中的资源、样式和主题,以在所有设备上获得全息外观。

  2. 在任何地方使用holo库。

  3. 对全息文本字段使用 PNG,并自己将它们设置为背景图像。您可以从 Android assets studios holo color generator 获取图像。您必须制作一个可绘制对象并定义正常、选定和禁用状态。

更新 2016-01-07

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

于 2013-07-03T13:27:40.500 回答
11

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

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

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

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

于 2014-05-12T13:22:41.947 回答
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>
于 2014-02-04T14:38:27.563 回答
5

编辑文本选择器.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>

编辑text_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>

编辑text_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>

编辑text_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+ 也能正常工作 在此处输入图像描述

于 2017-07-23T19:38:16.623 回答
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" />
于 2017-09-27T19:42:18.607 回答