2014-01-16 91 views
-1

我有一個GridView的佈局。選擇器在Android SDK 2.1和4.2.2上有不同的行爲

Gridview中的每個項目都是LinearLayout,它實現了Checkable interface

所有工作正常。但它只能在SDK 4.2.2

SDK 4.2.2

enter image description here

SDK 2.1

enter image description here

黑色背景應該不會顯示正確顯示。

GridView的代碼

<GridView 
    android:id="@+id/gvBirds" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:verticalSpacing="4dp" 
    android:layout_margin="32dp" 
    android:scrollbars="vertical"   
    android:numColumns="auto_fit" 
    android:listSelector="@color/transparent"> 
</GridView> 

GridView的項目碼

<?xml version="1.0" encoding="utf-8"?> 
<pt.rogerioamaral.ByMAP.CheckableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/gridItemLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:orientation="vertical" 
    android:background="@drawable/grid_item_selector"> 

    <TextView 
     android:id="@+id/lbBirdName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center" 
     android:text="nome grande" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:textColor="@color/main_gradient_end" 
     android:drawableTop="@drawable/falcao_small" 
     android:background="@drawable/main_grid_background" 
     android:layout_margin="5dp"/> 

</pt.rogerioamaral.ByMAP.CheckableLinearLayout> 

選擇代碼

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

    <item android:state_pressed="true" android:state_checked="true"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/main_gradient_end"/> 
      <corners android:radius="20dp"/> 
     </shape> 
    </item> 
    <item android:state_checked="true"> 
     <shape android:shape="rectangle"> 
      <stroke android:color="@color/main_gradient_end" 
       android:width="3dp"/> 
      <corners android:radius="20dp"/> 
     </shape> 
    </item> 
    <item android:state_pressed="true"> 
     <shape android:shape="rectangle"> 
      <solid android:color="@color/main_gradient_end"/> 
      <corners android:radius="20dp"/> 
     </shape> 
    </item> 
    <item android:drawable="@color/transparent"/> 
</selector> 

colors.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <color name="main_gradient_start">#454444</color> 
    <color name="main_gradient_end">#BAB8B9</color> 
    <color name="transparent">#00000000</color> 
</resources> 

我該怎麼做才能在這兩種情況下相同的行爲?

+0

2.1添加<solid> atributte現在是幾乎不存在的一個日子裏,我甚至不會用它,除非打擾你有具體的理由這樣做。 Google甚至不會在其操作系統分佈圖中顯示它。 http://developer.android.com/about/dashboards/index.html?utm_content=buffer07ca2&utm_source=buffer&utm_medium=twitter&utm_campaign=Buffer – blindstuff

回答

1

需要與color="@color/transparent"state_checked="true"

<item android:state_checked="true"> 
    <shape android:shape="rectangle"> 
     <solid android:color="@color/transparent"/> 
     <stroke android:color="@color/main_gradient_end" 
      android:width="3dp"/> 
     <corners android:radius="20dp"/> 
    </shape> 
</item> 
2

在你的GridView XML android:listSelector(int)實際上是選定的項目。它不會出錯,因爲你的@ color/transparent是(int)0x00000000。

我敢肯定,後臺的差異是由於SDK之間默認背景顏色的變化。

希望這兩個更改將解決它。 (注意:第一個是隻是爲了清楚起見)

<GridView 
    android:id="@+id/gvBirds" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:verticalSpacing="4dp" 
    android:layout_margin="32dp" 
    android:scrollbars="vertical"   
    android:numColumns="auto_fit" 
    android:listSelector="0"> <!-- selects the first item in the list, changed for clarity --> 
</GridView> 



<item android:state_checked="true"> 
     <shape android:shape="rectangle"> 
      <stroke android:color="@color/main_gradient_end" 
       android:background="@color/transparent" 
       android:width="3dp"/> <!-- added to set background color to transparent --> 
      <corners android:radius="20dp"/> 
     </shape> 
    </item> 
+0

android:背景''不工作。但是你讓我走向正確的方向。看到我的答案。謝謝。 – ramaral

+0

Bleah。我的意思是添加固體。對不起,但很高興看到你有正確的方向,儘管我的錯誤。 –

相關問題