自定义EditText - 材料设计

时间:2015-09-27 18:36:34

标签: android android-edittext material-design android-custom-view

我开发了一个自己的类,它扩展了EditText。 但我的自定义视图还有另一种外观作为普通视图。

public class DateEditText extends EditText {
    [...]

    public DateEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public DateEditText(Context context) {
        super(context);
        init();
    }

    public DateEditText(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        setInputType(InputType.TYPE_CLASS_DATETIME);
        setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
        setFocusable(false);
    }

    [...]
}

前两个输入字段是普通的EditText。 第三是我自己的观点。

    <EditText
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:id="@+id/addTask_title"
        android:textSize="16sp"
        android:maxLength="50"
        android:hint="@string/addTask_title"/>

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="56dp"
        android:maxLines="5"
        android:scrollbars="vertical"
        android:inputType="textMultiLine"
        android:id="@+id/addTask_description"
        android:textSize="16sp"
        android:maxLength="400"
        android:hint="@string/addTask_description"/>

    <de.test.DateEditText
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:id="@+id/addTask_date"
        android:textSize="16sp"
        android:hint="@string/addTask_date"/>

我喜欢和我自己的EditText一样拥有与前两个相同的风格,但我不知道如何实现这一点。

在具有SDK 21的设备上一切正常,但在SDK 21下面,第三个视图看起来不同。

2 个答案:

答案 0 :(得分:1)

在自定义style="@style/Widget.AppCompat.EditText"中添加EditText

例如:

<de.test.DateEditText
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:id="@+id/addTask_date"
        android:textSize="16sp"
        android:hint="@string/addTask_date"
        style="@style/Widget.AppCompat.EditText"/>

答案 1 :(得分:1)

对于应用colorAccent,只需从android.support.v7.widget.AppCompatEditText扩展自定义EditText类