列表视图中的checkbox样式不正确

我在列表视图中显示的checkbox中遇到了样式问题。 我的应用程序使用的主题是Holo,但checkbox以旧式显示。 出现在其他地方的checkbox看起来不错。 我没有做任何事情,比如创造我自己的风格。 截图:

在这里输入图像说明

checkbox应该看起来像右边的图片。 这是在v4.0.3。 checkbox看起来像他们应该在我尝试使用v4.4.2的另一个设备上。

用于listview行的XML:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <CheckBox android:id="@+id/ListRow_Task_TaskComplete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:layout_marginLeft="6sp" android:focusable="false" /> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingTop="7dip" android:paddingBottom="7dip" android:layout_toRightOf="@+id/ListRow_Task_TaskComplete" android:layout_centerVertical="true" > <TextView android:id="@+id/ListRow_Task_Name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="16sp" /> // next two textviews are programmatically hidden right now <TextView android:id="@+id/ListRow_Task_Deadline" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" android:textSize="12sp" /> <TextView android:id="@+id/ListRow_Task_Tags" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@drawable/icon_tag" android:drawablePadding="4dip" android:textSize="12sp" /> </LinearLayout> </RelativeLayout> 

我怎样才能使左边的checkbox看起来像他们应该?

Solutions Collecting From Web of "列表视图中的checkbox样式不正确"

将全息checkbox图像复制到Android可绘制文件夹中,获取所有dpis和分辨率。 然后将android:button属性设置为新的select器xml。 这样你就可以完全控制它在目标设备上的外观。

 <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_checked="true" android:state_focused="true" android:drawable="@drawable/btn_check_on_focused_holo_light" /> <item android:state_checked="false" android:state_focused="true" android:drawable="@drawable/btn_check_off_focused_holo_light" /> <item android:state_checked="false" android:drawable="@drawable/btn_check_off_holo_light" /> <item android:state_checked="true" android:drawable="@drawable/btn_check_on_holo_light" /> </selector> 

我最近遇到同样的问题,并find真正的解决scheme,而不仅仅是一个解决方法。

当你在getView()方法中膨胀你的视图时:

public View getView(int position, View convertView, ViewGroup parent) { return inflater.inflate(R.layout.list_item, parent, false); }

您需要确保您使用的inflater包含Activity上下文,而不是Application上下文,因为Activity上下文知道您使用的主题,而Application不是。

所以确保你使用以下或类似的方法之一来创buildinflater:

  • LayoutInflater.from(activity);
  • getLayoutInflater(); // from within activity
  • LayoutInflater.from(parent.getContext());

为了快速检查此解决scheme,只需更换:

return inflater.inflate(R.layout.list_item, parent, false);

有:

return LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);

我也有这个问题。 我正在使用三星Galaxy S4,而我的应用程序中的checkbox出现旧学校types。 如果我在“Android模拟器”中运行相同的应用程序,它显示我想要的方式。

我build议的最好的事情,不要担心。 只要在市场上上传应用程序,应该没问题。

尝试将AndroidManifest.xml文件中的targetSdkVersion设置为最新版本(确保您已下载了该SDK版本):

 android:targetSdkVersion="19"