Android 5.0(Lollipop)CheckedTextView按突出显示问题

时间:2014-12-17 05:51:44

标签: android android-5.0-lollipop android-recyclerview checkedtextview

在Android 5.0 Lollipop上运行时,RecyclerView充满了CheckedTextViews,我遇到了令人沮丧的问题。棒棒糖之前的所有版本都很好,并没有表现出这个问题。请查看下面的图片以便更好地理解:

预棒棒糖

pre-lollipop screenshot

棒棒糖

lollipop screenshot

了解Lollipop如何仅在CheckedTextView的复选框部分上绘制选择突出显示? Pre-Lollipop没有这个问题/错误,并在视图的整个宽度上绘制选择突出显示(这是我想要的行为)。

以下是我在列表中绘制的CheckedTextView:

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="?attr/selectableItemBackground"
    android:checkMark="@drawable/checkbox"
    android:id="@+id/model_checkable_name"
    android:layout_height="48dp"
    android:layout_width="match_parent" />

有什么想法吗?我尝试了一些不同的解决方案,例如android:focusable="false"android:duplicateParentState="true"android:duplicateParentState="false" ......

谢谢你们!

1 个答案:

答案 0 :(得分:0)

您可以像在Google IO应用中一样使用CheckBoxPreference来解决这个问题,我想知道CheckedTextView中是否存在Lollipop问题。

我尝试使用backgroundselectablebordeless,它也不起作用。

你解决了它还是已知的错误?

编辑:

您可以在checkedtextview上使用framelayout,并使用带有framelayout的onClickListener来设置选中并取消选中checktextview。将framelayout和checkedtextview放在相对布局中:

          <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="56dp"
                android:layout_marginEnd="8dp"
                android:layout_marginLeft="8dp"
                android:layout_marginRight="8dp"
                android:layout_marginStart="8dp">

                <FrameLayout
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:layout_alignParentBottom="true"
                    android:layout_marginTop="8dp"
                    android:background="@color/md_divider" />

                <android.support.v7.widget.SwitchCompat
                    android:id="@+id/switchWidget"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:layout_alignParentEnd="true"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:padding="16dp"
                    android:text="Switch Widget Title"
                    android:textAppearance="@style/TextAppearance.AppCompat.Inverse"
                    android:textColor="@color/md_text"
                    android:textSize="16sp" />

                <FrameLayout
                    android:id="@+id/frameLayoutSwitch"
                    android:clickable="true"
                    android:background="?attr/selectableItemBackground"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"/>
            </RelativeLayout>