包含的EditText上的提示和InputType

时间:2013-05-02 19:41:30

标签: android include android-edittext

我在XML文件中声明了自定义EditText,我将其包括在内:

<include layout="@layout/my_edit_text"
        android:id="@+id/passwordField"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/passwordHint"
        android:inputType="textPassword" />

这里是my_edit_text.xml

<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:textColor="@color/gray"
    android:textSize="@dimen/editTextFontSize"
    android:padding="@dimen/editTextPadding"
    android:background="@drawable/edit_text_background"
    android:ellipsize="end" />

但是,出于某种原因,我无法以这种方式设置hintinputType。如果我在my_edit_text.xml中设置它,它可以正常工作,但我希望能够单独设置每个引用。

我拥有自定义EditText的原因是为了避免重写EditText中每一个的所有常用值。

我是否必须做与what this person has类似的事情?如果我这样做,我是否需要实际构建一个.java子类并以这种方式提取属性?这似乎过分了。

1 个答案:

答案 0 :(得分:3)

  

我有自定义EditText的原因是为了避免在每个EditTexts中重写所有常用值。

步骤1:删除my_edit_text.xml

步骤2:删除对my_edit_text.xml的所有引用。

步骤3:定义样式资源(例如,在res/values/styles.xml中),类似于:

<style name="rileyText">
  <item name="android:textColor">@color/gray</item>
  <item name="android:textSize">@dimen/editTextFontSize</item>
  <item name="android:padding">@dimen/editTextPadding</item>
  <item name="android:background">@drawable/edit_text_background</item>
  <item name="android:ellipsize">end</item>
</style>

步骤4:将style="@style/rileyText"添加到您希望应用这些特定属性的所有EditText小部件。