[英]EditText in ListView behavior
我發現ListView中的EditText時,EditText的FocusChange行為有所不同。 我的測試程序有兩個EditText。 一旦進入活動,列表視圖中就會出現另一個。
以下是我在普通Editext中鍵入文本並失去焦點時的日志
10-11 16:26:32.440: INFO/Test(4317): 1:onFocusChange:false
10-11 16:26:32.490: INFO/Test(4317): 2:onFocusChange:true
以下是當我在列表視圖中的Editext中鍵入文本並失去焦點時的日志
10-11 16:28:17.551: INFO/Test(4317): 2:onFocusChange:false
10-11 16:28:17.609: INFO/Test(4317): 2:onFocusChange:true
10-11 16:28:17.679: INFO/Test(4317): 2:onFocusChange:false
10-11 16:28:17.719: INFO/Test(4317): 1:onFocusChange:true
日志告訴我,列表視圖中的EditText將觸發超過1次的“焦點更改”。 這種行為是錯誤還是沒有
我使用的是Android 4.0.3 SDK。
以下是XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText1" android:layout_gravity="center"/>
<ListView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/listView"/>
</LinearLayout>
這是代碼
public class EditTextActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.edit_text_activity);
final EditText editText = (EditText) findViewById(R.id.editText1);
editText.setWidth(200);
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
Log.i("Test", "1:onFocusChange:" + hasFocus);
editText.setText("");
}
});
ListView listView = (ListView) this.findViewById(R.id.listView);
listView.setAdapter(new BaseAdapter() {
@Override
public int getCount() {
return 1;
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
LinearLayout layout = new LinearLayout(viewGroup.getContext());
final EditText editText = new EditText(viewGroup.getContext());
editText.setId(1);
editText.setLayoutParams(new ViewGroup.LayoutParams(200,ViewGroup.LayoutParams.WRAP_CONTENT));
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean hasFocus) {
Log.i("Test", "2:onFocusChange:" + hasFocus);
editText.setText("");
}
});
layout.addView(editText);
return layout;
}
});
}
}
編輯文本丟失和重新獲得焦點不是錯誤。 當您按下鍵盤上的某個鍵時,該鍵將獲得焦點,但是當您釋放該鍵時,edittext將獲得焦點。 你想做什么? 編輯文本是否用於搜索並添加到列表視圖中?
您需要為此使用getter setter方法。 我還通過下面的鏈接嘗試了此操作。 https://looksok.wordpress.com/2012/11/03/android-custom-listview-tutorial/祝你好運
您必須在活動中使用editText添加以下行
android:windowSoftInputMode="adjustPan"
然后您的listView必須具有
android:descendantFocusability="beforeDescendants"
來源: http : //androidtechnicalblog.blogspot.ch/search/label/ListView
在清單中為您的活動添加以下內容-
android:windowSoftInputMode="adjustPan"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.