我想找出一个很好的解决方案,如何扩展EditText,让我有顶层的其他视图。我正在试图制作一个自定义的View,它是一个EditText,它具有顶部的TextView以显示字符数量,顶部的ImageView用于清除按钮。Android - 自定义视图 - 扩展EditText与顶部视图
目前,我有扩展FrameLayout的工作,但这并没有给我控制/灵活性,我正在寻找。比如我不能使用ButterKnife的@OnTextChanged,因为它期望一个TextView,并且我没有直接访问EditText的任何XML属性,除非我传递它们。
谢谢你的时间。
ClearableEditText.java
public class ClearableEditText extends FrameLayout {
public ClearableEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
protected void init() {
View inflate = inflate(getContext(), R.layout.clearable_edit_text, this);
ButterKnife.bind(this, inflate);
...
}
...
}
R.layout.clearable_edit_text.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/clearable_edit"
style="@style/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10" />
<ImageView
android:id="@+id/clearable_clear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_marginRight="10dp"
android:layout_marginTop="5dp"
android:src="@drawable/button_clear"
android:visibility="invisible"
tools:visibility="visible" />
<TextView
android:id="@+id/clearable_count"
style="@style/edit_text_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|right"
tools:text="1200" />
</FrameLayout>
只要使用此布局并在文本视图中显示数字并在编辑文本中输入时可以实现同样的功能吗?清除编辑文本也是一样。在我看来,ButterKnife在这里的用法有点矫枉过正。因此,创建可以以其他方式安排的功能的自定义视图。如果我错过了一些东西,想了解走很长的路的原因。 – daxgirl
我曾经在使用的布局中使用它,但问题是这个功能遍布我的应用程序。我试图通过将其变成一个干净的自定义视图来重现处理计数器/清除的所有额外代码。 –