我有一个GridView
的布局。
Gridview
中的每个项目都是实现LinearLayout
的{{1}}。
一切正常。但它只能在SDK 4.2.2中正确显示
SDK 4.2.2
SDK 2.1
不应显示黑色背景。
GridView代码
Checkable interface
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>
选择代码
<?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>
colors.xml
<?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>
在两种情况下我都必须做同样的行为吗?
答案 0 :(得分:2)
在GridView XML中: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>
答案 1 :(得分:1)
需要在<solid>
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>