0

我已創建自定義這是一種有兩個TextViews,兩Buttons和一個EditText的EditText而在ListView中的Android按鍵

我的問題是ListView

1)編輯文本失去控制,甚至後加入android:descendantFocusability="beforeDescendants"

到根佈局和beforeDescendants塊onItemClick和onClick按鈕

2)如果我在根佈局中添加android:descendantFocusability="BlocksDescendants",則onItemClick列表和onClick按鈕開始工作,但EditText即使在觸摸edittext鍵盤不顯示後也變得不可觸摸。

任何人都可以請指導我嗎?

我的代碼:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:descendantFocusability="beforeDescendants" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/tv_separator" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/dark_grey" 
     android:paddingLeft="15dp" 
     android:text="TextView" 
     android:textStyle="bold" /> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/lighter_gray" 
     android:paddingLeft="15dp" > 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="0.5" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/tv_detail_1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="TextView" /> 

      <TextView 
       android:id="@+id/tv_detail_2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="TextView" /> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="0.5" 
      android:paddingBottom="5dp" 
      android:paddingRight="10dp" 
      android:paddingTop="5dp" > 

      <ImageButton 
       android:id="@+id/btn_left" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:focusable="true" 
       android:focusableInTouchMode="true" 
       android:padding="1dp" 
       android:src="@drawable/right_arrow" /> 

      <EditText 
       android:id="@+id/editText1" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_marginLeft="5dp" 
       android:layout_marginRight="5dp" 
       android:layout_weight="1" 
       android:background="@drawable/edittext_background" 
       android:enabled="true" 
       android:focusable="true" 
       android:focusableInTouchMode="true" 
       android:inputType="textPersonName" > 
      </EditText> 

      <ImageButton 
       android:id="@+id/btn_right" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:focusable="true" 
       android:focusableInTouchMode="true" 
       android:padding="1dp" 
       android:src="@drawable/left_arrow" /> 
     </LinearLayout> 
    </LinearLayout> 
+1

它更容易理解您嘗試使用的代碼的問題。 –

+0

您無法專注於edittext使用此屬性android:focusableInTouchMode =「true」 –

+0

嘗試用此替代此:android:descendantFocusability =「beforeDescendants」:android:focusable =「false」,android:focusableInTouchMode =「false」 –

回答

0

我建議儘量實現自定義列表視圖,爲此我們創建一個適配器中,我們將創建兩個佈局

佈局1)

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

<ListView 
    android:id="@+id/listView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 

    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" > 
</ListView> 
</RelativeLayout> 

佈局2)

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:text="TextView" /> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/textView1" 
    android:layout_marginTop="16dp" 
    android:text="TextView" /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/textView2" 
    android:layout_marginLeft="20dp" 
    android:layout_marginRight="20dp" 
    android:layout_toRightOf="@+id/textView1" 
    android:ems="10" > 

    <requestFocus /> 
</EditText> 

<Button 
    android:id="@+id/button2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/button1" 
    android:layout_alignBottom="@+id/button1" 
    android:layout_alignParentRight="true" 
    android:text="Button" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/textView2" 
    android:layout_marginTop="29dp" 
    android:text="Button" /> 

</RelativeLayout> 

而在的.java類創建列表視圖 Test.java自定義適配器)

public class Testttt extends Activity { 
    ListView listView; 
    CustomAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.direction); 
    findId(); 
    executionMethod(); 
    } 

private void findId() { 
    listView = (ListView) findViewById(R.id.listView1); 
    adapter = new CustomAdapter(this); 
    } 

private void executionMethod() { 
    listView.setAdapter(adapter); 

} 

class CustomAdapter extends BaseAdapter { 
    public CustomAdapter(Context convertView) { 

    } 

    @Override 
    public int getCount() { 

     return 0; 
    } 

    @Override 
    public Object getItem(int position) { 

     return null; 
    } 

    @Override 
    public long getItemId(int position) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = LayoutInflater 
       .from(getApplicationContext()); 
     View view = inflater.inflate(R.layout.qwerty, null); 
     Button btn1 = (Button) view.findViewById(R.id.button1); 
     Button btn2 = (Button) view.findViewById(R.id.button2); 
     EditText edt = (EditText) view.findViewById(R.id.editText1); 

     return view; 
    } 

    } 

    } 

應當注意,customadapter類,你可以根據自己的需求

0

在您的清單中特別項目functionality文件在活動標記下添加android:windowSoftInputMode="stateHidden|adjustPan",您已在其中進行列表視圖