2013-01-03 45 views
0

我有一個列表視圖的行包含一個複選框,一些圖像,TextViews等。如果我選擇一行,只有該複選框應該激活。該行沒有焦點,沒有CheckBox的高亮顯示。 當前,當我選擇一行時,背景變爲藍色(全光色)。那就是我不想要的。我不想要任何顏色,只有CheckBox激活/停用。android:列表視圖與複選框:行不應該重點

我怎樣才能做到這一點?

我的佈局是這樣的:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:paddingBottom="3dip" 
     android:paddingLeft="5dip" 
     android:paddingTop="2dip" 
     android:text="Medium Text" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textStyle="bold" /> 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/linearLayoutMain" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <CheckBox 
      android:id="@+id/checkBox1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:clickable="false" 
      android:focusable="false" 
      android:focusableInTouchMode="false" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" > 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" > 

       <TextView 
        android:layout_width="0dip" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:ellipsize="marquee" 
        android:fadingEdge="vertical" 
        android:paddingBottom="3dip" 
        android:paddingLeft="5dip" 
        android:paddingTop="2dip" 
        android:singleLine="true" 
        android:text="@string/test" 
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:textStyle="bold" /> 

       <my.custom.ProgressChart 
        xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@+id/progress" 
        android:layout_width="181px" 
        android:layout_height="31px" 
        android:layout_marginLeft="1sp" 
        android:layout_marginRight="3sp" 
        android:layout_marginTop="5sp" 
        android:clickable="false" 
        android:focusable="false" 
        android:focusableInTouchMode="false" /> 
      </LinearLayout> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:paddingBottom="3dip" 
       android:paddingLeft="5dip" 
       android:text="@string/test" 
       android:textAppearance="?android:attr/textAppearanceSmall" /> 
     </LinearLayout> 
    </LinearLayout> 

</LinearLayout> 
+0

我不確定你到底在想什麼。你能否詳細解釋一下? – AndroidPenguin

+0

您正試圖創建一個列表,只有在複選框被激活的情況下,纔會選擇行。在選中複選框之前,您不希望對行和複選框進行任何聚焦?我對麼? – VendettaDroid

+0

我已更新我的問題。 – user1324936

回答

1

要禁用的選擇,設置你的ListViewandroid:listSelector屬性。

<ListView 
    android:id="@android:id/list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:listSelector="@android:color/transparent" /> 

檢查/取消選中CheckBox當在OnItemClickListener被選擇的行。

getListView().setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkBox1); 
     checkBox.setChecked(!checkBox.isChecked()); 
    } 

}); 
相關問題