2011-06-08 17 views
5

Aslında birden fazla liste görüntülemesi olan bir android uygulaması geliştiriyorum. ListView Uygulaması'nda, her liste görünümü öğesi için bir hücreyi şişiriyorum. Bu, bu hücrenin arka plan üzerine category_cell.xmlHer bir liste görünümü öğesi için farklı basılı durumlar renkleri nasıl ayarlanır?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="60dip" 
    android:id="@+id/cell_layout" 
    android:background="@drawable/list_bg"> 
    <RelativeLayout 
     android:id="@+id/category_cell_layout" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <ImageView 
      android:id="@+id/category_image" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="10dip" 
      android:layout_height="45dip" 
      android:layout_width="45dip" /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/category_name" 
      android:text="Category Name" 
      android:textSize="16dip" 
      android:typeface="sans" 
      android:layout_centerVertical="true" 
      android:layout_marginLeft="70dip" 
      android:textColor="@color/white" /> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/arrow_image" 
      android:background="@drawable/list_arrow" 
      android:layout_alignParentRight="true" 
      android:layout_centerVertical="true" 
      android:layout_marginRight="10dip" /> 
    </RelativeLayout> 
</RelativeLayout> 

olduğunu bir çizilebilir xml yerleştirilir. list_bg.xml kodu aşağıdaki sahiptir:

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:state_selected="false" 
     android:state_pressed="false" 
     android:drawable="@color/transparent" /> 
    <item 
     android:state_pressed="true" 
     android:drawable="@color/blue" /> 
    <item 
     android:state_selected="true" 
     android:state_pressed="false" 
     android:drawable="@color/blue" /> 
</selector> 

öğelerle liste görünümünü doldurma, ben her öğe için arka plan xml preslenmiş ve odaklanmış devletler için farklı bir renk ayarlamak istiyorum. Her öğe bir rengin değerini içerir ve bu rengin o öğenin basılı durumunda olmasını istiyorum.

StateListDrawable states = new StateListDrawable(); 
states.addState(new int[] {android.R.attr.state_pressed},getResources().getDrawable(R.color.translucent_red)); 
states.addState(new int[] {android.R.attr.state_focused},getResources().getDrawable(R.color.white)); 
states.addState(new int[] { },getResources().getDrawable(R.color.white)); 
row.setBackgroundDrawable(states); 

Ben bu uygulamaya çalışsa ama bu normal add_state fonksiyonun ikinci parametresi olarak çekilebilir kabul ama orada bir renk göndermek istediğiniz .... kimse bana yardım eder misiniz ???

+1

can c'yi kendi renkleri ur xml dosyalarını ayarlayabilirsiniz sadece bir örnektir. ques'i düzenleyin ve d kodunu düzgün bir şekilde yerleştirin – Lavanya

+0

@Rosalie: XML dosyaları kodla düzgün şekilde görüntülenir. Lütfen şimdi tekrar gözden geçirin. –

+0

Teşekkürler çocuklar. Problem çözüldü. Tekrar kendim denedim ve en sonunda bunu başardım. –

cevap

0

sadece list_bg.xml dosyasını değiştirin. Bu

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

<item android:state_pressed="true"><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
     <gradient android:angle="90" android:centerColor="#6da23f" android:endColor="#8bc45d" android:startColor="#2f481c" /> 

     <stroke android:width="2dp" android:color="#999999" /> 

     <padding android:bottom="4dp" android:left="3dp" android:right="3dp" android:top="6dp" /> 

     <corners android:radius="10px"/> 
    </shape></item> 
<item><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
     <gradient android:angle="90" android:centerColor="#6da23f" android:endColor="#8bc45d" android:startColor="#4c8a39" /> 

     <stroke android:width="1dp" android:color="#FFFFFF" /> 

     <padding android:bottom="4dp" android:left="3dp" android:right="3dp" android:top="6dp" /> 

     <corners android:radius="10px"/> 
    </shape></item> 

İlgili konular