【问题标题】:Changing the look of an EditText widget in android studio [duplicate]在android studio中更改EditText小部件的外观[重复]
【发布时间】:2018-01-23 04:30:30
【问题描述】:

从这个外观如何设置android studio中默认编辑文本字段的样式:

到这里:

这与How to change style of a default EditText 不同,因为我要从默认的下划线布局转到框布局,反之亦然。

作为参考,这里是代表整个活动的 XML。下面显示有问题的 EditText 字段。还有一个类似的,具有几乎相同的特征:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
    ...>

<GridLayout
    ...>

    ...

    *<EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_row="1"
        android:ems="10"
        android:inputType="textPersonName" />*
      ...
</GridLayout>
...
</android.support.constraint.ConstraintLayout>

【问题讨论】:

    标签: android android-layout android-edittext widget


    【解决方案1】:

    在你项目的drawable文件夹中创建一个名为“EditTextStyle.xml”的XML文件,并编写如下代码:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
    <stroke
        android:width="2dp"
        android:color="@color/black" />
    <solid
        android:color="#00FFFFFF"
        android:paddingLeft="6dp"
        android:paddingTop="6dp" />
    <padding
        android:bottom="6dp"
        android:left="6dp"
        android:right="6dp"
        android:top="6dp" />
    </shape>
    

    在您的布局文件中使用此 xml 作为编辑文本中的背景属性,例如 android:background="@drawable/EditTextStyle"。像这样

    <EditText
        android:id="@+id/editText2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="1"
        android:layout_row="1"
        android:background="@drawable/EditTextStyle"
        android:ems="10"
        android:inputType="textUserName" />
    

    它会为你工作。

    【讨论】:

    • 如果我使用编写的代码,它会返回意外的文件结束错误。在第一个“>”之前添加反斜杠会返回“多个根标签”错误。是否缺少字符?
    • @BenjaminSarkis 能否请您发布您的代码 sn-p 以便我可以帮助您解决问题。
    • 这里是 res/drawable 目录下的代码 sn-p。我的文件名为EditTextStyle.xml:&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"android:thickness="0dp"android:shape="rectangle"/&gt;&lt;stroke android:width="3dp"android:color="#E1BB5F"/&gt;&lt;corners android:radius="5dp" /&gt;&lt;gradient&lt;gradientandroid:startColor="#C8C8C8"android:endColor="#FFFFFF"android:type="linear"@987654
    • @BenjaminSarkis 您现在可以试试上面编辑过的答案吗?希望对你有帮助。
    • 成功了!但是,对我来说,xml 文件只有在它们是小写时才有效。
    【解决方案2】:

    你有两个选择,要么像这样使用 TextInputLayoutEdittext,要么像你已经在使用的那样简单地使用 Edittext 并给它一个背景。

    方法一:

    <android.support.design.widget.TextInputLayout
            android:id="@+id/tilSignUpFirstName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginEnd="20dp"
            android:layout_marginStart="20dp"
            android:layout_marginTop="5dp"
            app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout"
          >
    
            <android.support.design.widget.TextInputEditText
                android:id="@+id/etYourEdittext"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fontFamily="serif"
                android:hint="@string/first_name"
                android:inputType="textPersonName"
                android:maxLines="1"
                android:padding="15dp"
                android:textAppearance="?android:attr/textAppearanceSmall" />
    
        </android.support.design.widget.TextInputLayout>
    

    并在你的styles.xml中添加style

    <style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/white</item>
    <item name="colorControlNormal">@color/white</item>
    <item name="colorControlActivated">@color/white</item>
    <item name="colorControlHighlight">@color/white</item>
    <item name="android:textColorHighlight">@color/white</item>
    <item name="android:textColorHint">@color/white</item>
    <item name="android:textColorPrimary">@color/white</item>
    

    方法二:

          <EditText
                            android:id="@+id/editText3"
                            android:layout_width="match_parent"
                            android:layout_height="match_parent"
    
    
     android:background="@drawable/bg_spinner_nothing_selected"
                            android:hint="@string/quantity"
                            android:padding="5dp"
                            android:textSize="12sp" />
    

    并在您的可绘制文件中添加可绘制对象。

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:top="1dp" android:bottom="1dp">
        <shape
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:shape="rectangle"
            >
            <solid android:color="@color/white" />
            <stroke android:width="1dp"
                    android:color="@color/black_overlay"/>
    
        </shape>
    </item>
    

    【讨论】:

    • app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout" 在哪里显示?这似乎有点不合适,我的 android studio 无法将其作为有效属性。
    • @BenjaminSarkis 您还必须包含 app: 名称空间。像这样在你的父布局中。 xmlns:app="schemas.android.com/apk/res-auto"
    • @BenjaminSarkis 成功了吗?
    • 感谢@Umair 的建议,但是,我选择了第一个答案,这对我来说已经足够了。
    猜你喜欢
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2011-02-22
    • 2011-09-13
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多