CheckBox 在新 Android Material 库中无法正常工作,无法看到实际的复选标记
CheckBox not working properly in new Android Material Library, not able to see actual checkmarks
我做了两件事:
- 迁移到 Android X
- 将应用迁移到 AppCompat
完成这 2 项操作后,复选框在 Listview 中无法正常工作。这是我的代码:
build.gradle:
dependencies {
implementation files('libs/httpmime-4.3.jar')
implementation files('libs/httpcore-4.3.jar')
implementation 'androidx.appcompat:appcompat:1.0.0-rc01'
implementation 'androidx.legacy:legacy-support-v4:1.0.0-rc01'
implementation 'com.google.android.material:material:1.0.0-rc01'
}
复选框行:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/facets"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/ten_dip"
android:gravity="center_vertical"
android:orientation="horizontal"
android:weightSum="1.0" >
<LinearLayout
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="0.97"
android:orientation="horizontal" >
<TextView
android:id="@+id/title_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.25"
/>
<TextView
android:id="@+id/title_tv_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.75"
/>
</LinearLayout>
<CheckBox
android:id="@+id/facets_img_checkbox"
android:layout_width="wrap_content"
android:clickable="true"
android:layout_height="wrap_content"
/>
</LinearLayout>
列表视图布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:clickable="true"
android:weightSum="1">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight=".1"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:background="@color/white"
android:elevation="2dp"
>
<LinearLayout
android:id="@+id/back_button_filter"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_alignParentLeft="true"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/back_button"
app:srcCompat="@drawable/ic_caret_back"
android:padding="5dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingLeft="10dp"
android:text="Filters"
android:gravity="center_vertical"
android:textSize="18sp"
android:textColor="@color/black_555555"
android:fontFamily="sans-serif"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/reset_button"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_alignParentRight="true"
android:text="RESET"
android:textColor="@color/linkcolor"
android:gravity="center_vertical"
android:fontFamily="sans-serif"
android:textSize="18sp" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/click_menu"
android:orientation="horizontal"
android:paddingTop="@dimen/five_dip"
android:paddingBottom="5dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_gravity="center_vertical"
android:layout_weight=".1"
android:weightSum="1">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="Sort by"
android:gravity="center_vertical"
android:textColor="@color/black_555555"
android:fontFamily="sans-serif"
android:textSize="14sp"
android:layout_weight=".25"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=".75"
android:orientation="horizontal"
android:weightSum="2"
android:layout_gravity="center_vertical"
android:gravity="center_vertical">
<TextView
android:id="@+id/relevence_facets"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/blue_rectangle_button"
android:gravity="center"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textSize="14sp"
android:text="Relevance"
android:textColor="@color/white"
android:fontFamily="sans-serif"
android:layout_marginRight="10dp"/>
<TextView
android:id="@+id/freshness_facets"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textSize="14sp"
android:text="Freshness"
android:fontFamily="sans-serif"
android:textColor="@color/black_555555" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/facets_item"
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="horizontal"
android:layout_weight=".73"
android:weightSum="1">
<ScrollView
android:id="@+id/search_facets"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=".35"
android:fillViewport="true"
android:background="@color/click_menu"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="7">
<TextView
android:id="@+id/location_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="Location"
android:gravity="center|left"
android:paddingLeft="10dp"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:textStyle="bold"
android:background="@color/white"
android:layout_weight=".75"/>
<TextView
android:id="@+id/experience_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|left"
android:paddingLeft="10dp"
android:text="@string/experience"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:layout_weight=".75"/>
<TextView
android:id="@+id/salary_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|left"
android:paddingLeft="10dp"
android:text="@string/salary"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:layout_weight=".75"/>
<TextView
android:id="@+id/industry_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|left"
android:paddingLeft="10dp"
android:text="Industry"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:layout_weight=".75"/>
<TextView
android:id="@+id/fun_area_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|left"
android:paddingLeft="10dp"
android:text="Department"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:layout_weight=".75"/>
<TextView
android:id="@+id/job_type_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|left"
android:paddingLeft="10dp"
android:text="Job type"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:layout_weight=".75"/>
<TextView
android:id="@+id/top_companies_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|left"
android:paddingLeft="10dp"
android:text="Companies"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:layout_weight=".75"/>
</LinearLayout>
</ScrollView>
<ListView
android:id="@+id/list_view"
android:layout_width="0dp"
android:layout_weight=".65"
android:layout_height="match_parent"
android:background="@color/white"
android:divider="#e7e7e7"
android:dividerHeight="1dp"
android:horizontalSpacing="@dimen/ten_dip"
android:verticalSpacing="@dimen/ten_dip">
</ListView>
</LinearLayout>
<TextView
android:id="@+id/refine_text1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight=".07"
android:background="@drawable/button_yellow"
android:gravity="center"
android:layout_gravity="bottom"
android:text="Apply filters"
android:textStyle="bold"
android:textColor="#fff"
android:textSize="@dimen/sixteen_sp" />
</LinearLayout>
屏幕截图:
我看不到实际的复选标记,单击一个复选框时,它会更改列表中所有其他复选框的状态。
(代表问题作者发布答案)。
我成功了。
这是某种 Google 与以下 Oreo 版本的库兼容性问题。只需添加 checkbox.jumpDrawablesToCurrentState()
即可。
我做了两件事:
- 迁移到 Android X
- 将应用迁移到 AppCompat
完成这 2 项操作后,复选框在 Listview 中无法正常工作。这是我的代码:
build.gradle:
dependencies {
implementation files('libs/httpmime-4.3.jar')
implementation files('libs/httpcore-4.3.jar')
implementation 'androidx.appcompat:appcompat:1.0.0-rc01'
implementation 'androidx.legacy:legacy-support-v4:1.0.0-rc01'
implementation 'com.google.android.material:material:1.0.0-rc01'
}
复选框行:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/facets"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/ten_dip"
android:gravity="center_vertical"
android:orientation="horizontal"
android:weightSum="1.0" >
<LinearLayout
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="0.97"
android:orientation="horizontal" >
<TextView
android:id="@+id/title_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.25"
/>
<TextView
android:id="@+id/title_tv_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.75"
/>
</LinearLayout>
<CheckBox
android:id="@+id/facets_img_checkbox"
android:layout_width="wrap_content"
android:clickable="true"
android:layout_height="wrap_content"
/>
</LinearLayout>
列表视图布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:clickable="true"
android:weightSum="1">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight=".1"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:background="@color/white"
android:elevation="2dp"
>
<LinearLayout
android:id="@+id/back_button_filter"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
android:layout_alignParentLeft="true"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/back_button"
app:srcCompat="@drawable/ic_caret_back"
android:padding="5dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingLeft="10dp"
android:text="Filters"
android:gravity="center_vertical"
android:textSize="18sp"
android:textColor="@color/black_555555"
android:fontFamily="sans-serif"/>
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/reset_button"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_alignParentRight="true"
android:text="RESET"
android:textColor="@color/linkcolor"
android:gravity="center_vertical"
android:fontFamily="sans-serif"
android:textSize="18sp" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:background="@color/click_menu"
android:orientation="horizontal"
android:paddingTop="@dimen/five_dip"
android:paddingBottom="5dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_gravity="center_vertical"
android:layout_weight=".1"
android:weightSum="1">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:text="Sort by"
android:gravity="center_vertical"
android:textColor="@color/black_555555"
android:fontFamily="sans-serif"
android:textSize="14sp"
android:layout_weight=".25"/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=".75"
android:orientation="horizontal"
android:weightSum="2"
android:layout_gravity="center_vertical"
android:gravity="center_vertical">
<TextView
android:id="@+id/relevence_facets"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/blue_rectangle_button"
android:gravity="center"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textSize="14sp"
android:text="Relevance"
android:textColor="@color/white"
android:fontFamily="sans-serif"
android:layout_marginRight="10dp"/>
<TextView
android:id="@+id/freshness_facets"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:textSize="14sp"
android:text="Freshness"
android:fontFamily="sans-serif"
android:textColor="@color/black_555555" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/facets_item"
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="horizontal"
android:layout_weight=".73"
android:weightSum="1">
<ScrollView
android:id="@+id/search_facets"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight=".35"
android:fillViewport="true"
android:background="@color/click_menu"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="7">
<TextView
android:id="@+id/location_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:text="Location"
android:gravity="center|left"
android:paddingLeft="10dp"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:textStyle="bold"
android:background="@color/white"
android:layout_weight=".75"/>
<TextView
android:id="@+id/experience_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|left"
android:paddingLeft="10dp"
android:text="@string/experience"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:layout_weight=".75"/>
<TextView
android:id="@+id/salary_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|left"
android:paddingLeft="10dp"
android:text="@string/salary"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:layout_weight=".75"/>
<TextView
android:id="@+id/industry_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|left"
android:paddingLeft="10dp"
android:text="Industry"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:layout_weight=".75"/>
<TextView
android:id="@+id/fun_area_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|left"
android:paddingLeft="10dp"
android:text="Department"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:layout_weight=".75"/>
<TextView
android:id="@+id/job_type_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|left"
android:paddingLeft="10dp"
android:text="Job type"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:layout_weight=".75"/>
<TextView
android:id="@+id/top_companies_tv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center|left"
android:paddingLeft="10dp"
android:text="Companies"
android:textColor="@color/black_555555"
android:textSize="@dimen/fourteen_sp"
android:layout_weight=".75"/>
</LinearLayout>
</ScrollView>
<ListView
android:id="@+id/list_view"
android:layout_width="0dp"
android:layout_weight=".65"
android:layout_height="match_parent"
android:background="@color/white"
android:divider="#e7e7e7"
android:dividerHeight="1dp"
android:horizontalSpacing="@dimen/ten_dip"
android:verticalSpacing="@dimen/ten_dip">
</ListView>
</LinearLayout>
<TextView
android:id="@+id/refine_text1"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight=".07"
android:background="@drawable/button_yellow"
android:gravity="center"
android:layout_gravity="bottom"
android:text="Apply filters"
android:textStyle="bold"
android:textColor="#fff"
android:textSize="@dimen/sixteen_sp" />
</LinearLayout>
屏幕截图:
我看不到实际的复选标记,单击一个复选框时,它会更改列表中所有其他复选框的状态。
(代表问题作者发布答案)。
我成功了。
这是某种 Google 与以下 Oreo 版本的库兼容性问题。只需添加 checkbox.jumpDrawablesToCurrentState()
即可。