2010-11-20 116 views
1

我偶然發現了ListViews的一個奇怪問題。ListView顯示沒有反饋

在模擬器中,當按下某個項目進行選擇時,ListView不顯示任何反饋。我想我已經看到了這一點,但我不確定。我希望列表項被按下時被選中(較暗的背景),以便用戶可以看到他按下的是哪個項目。

我必須編碼嗎?

RG

看到評論後,我試過如下:

我創建了一個文件RES /顏色/ backgroundstate.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" 
      android:color="#888"/> 
    <item android:state_pressed="true" 
      android:color="#888"/> 
    <item android:color="#eee"/> 
</selector> 

然後我用這listitem.xml作爲背景顏色

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:textColor="@color/helptextcolor" 
    android:background="@color/backgroundstate" 
    android:padding="10dp" 
    android:textSize="16sp" > 
</TextView> 

當我顯示ListView與

ArrayAdapter adapter=new ArrayAdapter<String>(this,R.layout.listitem,names); 
    LV.setAdapter(adapter); 
    LV.invalidate(); 

該程序崩潰。

有三個例外與此有關。但問題似乎是最後一個XMLPullParserException:

<item> tag needs a drawable. 

現在呢?

回答

2

<item>確實需要一個可繪製的而不是顏色。你需要一個可繪製的顏色,像這樣:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#FFFF0000" /> 
</shape> 

...然後把它放到你的項目列表中。
此外,這是一個可繪製的,因此它必須在/res/drawable-*目錄中,而不是在/res/color/目錄中。

概括起來:

  • (可選)把你的顏色在/ RES /價值/顏色。帶名稱的xml文件
  • 在/ res/drawable目錄中創建兩個形狀可繪圖,一個用於中性色,一個用於按下顏色,以上面顯示的方式
  • 創建一個可繪製的狀態列表,類似於您確實,但在/ RES /繪製目錄
  • 使用它作爲您的列表項
0

是和否。這並不是說你必須編寫它,但你必須不禁用它。

如果您使用自定義視圖來顯示列表項目,則必須放置一個可繪製的圖標,以便您的視圖在選擇時提供反饋。例如,一張plainbitmap不會。

要做到這一點,最簡單的方法是創建一個狀態列表繪製的,就像這樣:
http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
一個ListView項會像在例子中描述的按鈕。如果您的背景可繪製包含一個state_pressed可繪製,則應在按列表條目時顯示它。

+0

我的ListItems是TextViews。或者更好地說,我使用佈局來表示項目,這是一個簡單的TextView,而ListView的ArrayAdapter指向該佈局。那麼,我如何突出顯示TextView? – Rene 2010-11-20 14:46:05

+0

您可以將可繪製的州列表作爲背景添加到您的textview中。狀態列表背景的高亮功能不僅限於按鈕,實際上它適用於任何視圖。 – Jean 2010-11-20 15:06:07

+0

啊,我明白了。聽起來有點矯枉過正,性能突破。我剛剛發現R.layout.simple_list_item_1完成了這項工作。但我不能使用它的顏色和字體大小。 – Rene 2010-11-20 15:44:35