2

偶数行か奇数行かによって色が異なるリスト ビューがあります。

私のカスタムアダプター:

 if ( position % 2 == 0)
        convertView.setBackgroundResource(R.layout.listview_selector_even);
      else
          convertView.setBackgroundResource(R.layout.listview_selector_odd);

list_selector_even:

<?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android" >        
      <item android:drawable="@layout/even_row" android:state_enabled="true"/>
      <item android:drawable="@layout/even_row" android:state_pressed="true"/>
      <item android:drawable="@layout/even_row" android:state_focused="true"/>
</selector>

list_selector_odd:

<?xml version="1.0" encoding="utf-8"?>
   <selector xmlns:android="http://schemas.android.com/apk/res/android" > 
      <item android:drawable="@layout/odd_row" android:state_enabled="true"/>
      <item android:drawable="@layout/odd_row" android:state_pressed="true"/>
      <item android:drawable="@layout/odd_row" android:state_focused="true"/>
  </selector>

偶数行:

<?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
  <solid android:color="#FFFFFF"/>  
   <padding android:left="3dp" android:top="3dp" android:right="3dp" android:bottom="3dp" />       
</shape>

奇数行:

<?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#F0F0F0"/>
<padding android:left="3dp" android:top="3dp" android:right="3dp" android:bottom="3dp" />
</shape>

グラデーション効果で偶数行と奇数行の色が機能しないため、少し迷っています。押された効果のグラデーションについては、次のコードを使用しました。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true" >
    <shape>
      <gradient
        android:startColor="#3E5260"
        android:endColor="#3E5260"
        android:angle="270" />
    </shape>
 </item>
</selector>

助けてくれてありがとう!

4

1 に答える 1

2

セレクターで状態を既に確認しているため、グラデーションについては、代わりに次のようにする必要があります。

<shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
  <gradient
    android:startColor="#3E5260"
    android:endColor="#3E5260"
    android:angle="270" />
</shape>

また、セレクターを次のように変更して各セレクター項目のファイルを定義するか、使用可能なすべての状態を含むセレクターを に移動しますodd_row.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
  <item android:drawable="@layout/odd_row_pressed" android:state_pressed="true"/>
  <item android:drawable="@layout/odd_row_focused" android:state_focused="true"/>
  <item android:drawable="@layout/odd_row_enabled"/>
</selector>

このバージョンでは、アイテムが押されておらず、フォーカスされていない場合に、odd_row_enabled.xml が選択されることが保証されます。アイテムが有効になっていない場合に別のレイアウトが必要な場合は、もう 1 行追加する必要があります (既定の行の前に)。また、odd_row_pressed.xml が押されて有効になっている場合に確実に選択されます。これは<item>、押された状態の が他の行の前に来るためです。

于 2013-08-20T08:52:41.523 に答える