我想找出一個很好的解決方案,如何擴展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
我曾經在使用的佈局中使用它,但問題是這個功能遍佈我的應用程序。我試圖通過將其變成一個乾淨的自定義視圖來重現處理計數器/清除的所有額外代碼。 –