在Android 5.0 Lollipop上运行时,RecyclerView充满了CheckedTextViews,我遇到了令人沮丧的问题。棒棒糖之前的所有版本都很好,并没有表现出这个问题。请查看下面的图片以便更好地理解:
了解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"
......
谢谢你们!
答案 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>