我如何改变默认的复选框的颜色在Android? 默认情况下,复选框的颜色是绿色,我想改变这个颜色。 如果不可能,请告诉我如何做一个自定义复选框?
当前回答
大多数答案都通过xml文件。如果你发现大多数Android版本都有一个活跃的答案,并且两种状态都只有一种颜色,检查和取消检查:下面是我的解决方案:
科特林:
val colorFilter = PorterDuffColorFilter(Color.CYAN, PorterDuff.Mode.SRC_ATOP)
CompoundButtonCompat.getButtonDrawable(checkBox)?.colorFilter = colorFilter
Java:
ColorFilter colorFilter = new PorterDuffColorFilter(Color.CYAN, PorterDuff.Mode.SRC_ATOP);
Drawable drawable = CompoundButtonCompat.getButtonDrawable(checkBox);
if (drawable != null) {
drawable.setColorFilter(colorFilter);
}
其他回答
您可以使用下面的代码行在java代码中动态更改复选框的背景。
//Setting up background color on checkbox.
checkbox.setBackgroundColor(Color.parseColor("#00e2a5"));
这个答案来自这个网站。你也可以使用这个网站将你的RGB颜色转换为十六进制值,你需要提供parseColor
大多数答案都通过xml文件。如果你发现大多数Android版本都有一个活跃的答案,并且两种状态都只有一种颜色,检查和取消检查:下面是我的解决方案:
科特林:
val colorFilter = PorterDuffColorFilter(Color.CYAN, PorterDuff.Mode.SRC_ATOP)
CompoundButtonCompat.getButtonDrawable(checkBox)?.colorFilter = colorFilter
Java:
ColorFilter colorFilter = new PorterDuffColorFilter(Color.CYAN, PorterDuff.Mode.SRC_ATOP);
Drawable drawable = CompoundButtonCompat.getButtonDrawable(checkBox);
if (drawable != null) {
drawable.setColorFilter(colorFilter);
}
您可以通过将<CheckBox>嵌入到<LinearLayout>中来更改它的背景颜色。然后将<LinearLayout>的背景色更改为您想要的颜色。
嗨,这是黑暗主题和光明主题的主题代码。
<attr name="buttonsearch_picture" format="reference"/>
<attr name="buttonrefresh_picture" format="reference"/>
<style name="Theme.Light" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/white</item>
<item name="android:windowActionBar">false</item>
<item name="android:textColorPrimary">@color/black</item>
<item name="android:textColorSecondary">@color/black</item>
<item name="android:textColor">@color/material_gray_800</item>
<item name="actionOverflowButtonStyle">@style/LightOverflowButtonStyle</item>
<item name="buttonsearch_picture">@drawable/ic_search_black</item>
<item name="buttonrefresh_picture">@drawable/ic_refresh_black</item>
</style>
<style name="Theme.Dark" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/white</item>
<item name="android:windowActionBar">false</item>
<item name="android:textColorPrimary">@color/white</item>
<item name="android:textColorSecondary">@color/material_gray_500</item>
<item name="android:textColor">@color/material_gray_800</item>
<item name="actionOverflowButtonStyle">@style/DarkOverflowButtonStyle</item>
<item name="buttonsearch_picture">@drawable/ic_search_white</item>
<item name="buttonrefresh_picture">@drawable/ic_refresh_white</item>
<item name="android:colorBackground">#ffffff</item>
<item name="android:alertDialogTheme">@style/LightDialogTheme</item>
<item name="android:alertDialogStyle">@style/LightDialogTheme</item>
<!-- <item name="android:textViewStyle">@style/AppTheme.Widget.TextView</item>-->
<item name="android:popupMenuStyle">@style/PopupMenu</item>
</style>
如果你想改变复选框的颜色,那么“colorAccent”属性将用于选中状态,“android:textColorSecondary”将用于取消选中状态。
"actionOverflowButtonStyle"将用于改变动作栏中溢出图标的颜色。
"buttonsearch_picture"属性将用于改变操作栏中操作按钮的颜色。这是style.xml中的自定义属性
<attr name="buttonsearch_picture" format="reference"/>
同样是刷新按钮,我在我的应用程序中使用。
"android:popupMenuStyle"属性用于在Dark主题中获得Light主题弹出式菜单样式。
<style name="PopupMenu" parent="Theme.AppCompat.Light.NoActionBar">
</style>
这是工具栏代码,我正在使用在我的岩石播放器应用程序。
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
app:contentInsetStart="0dp"
android:title="Rocks Player"
android:layout_width="match_parent"
android:elevation="4dp"
android:layout_height="48dp"
app:layout_scrollFlags="scroll|enterAlways"
android:minHeight="48dp"
app:titleTextAppearance="@style/Toolbar.TitleText"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:background="?attr/colorPrimary"
>
</android.support.v7.widget.Toolbar>
主题:-
<style name="AppTheme0" parent="Theme.Light">
<item name="colorPrimary">#ffffff</item>
<item name="colorPrimaryDark">#cccccc</item>
<item name="colorAccent">#0294ff</item>
</style>
<style name="AppTheme1" parent="Theme.Dark">
<item name="colorPrimary">#4161b2</item>
<item name="colorPrimaryDark">#4161b2</item>
<item name="colorAccent">#4161b2</item>
</style>
如果你打算使用android图标,如上所述..
android:button="@android:drawable/..."
. .这是一个不错的选择,但为了让它工作-我发现你需要添加切换逻辑来显示/隐藏复选标记,就像这样:
checkBoxShowPwd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
// checkbox status is changed from uncheck to checked.
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int btnDrawable = android.R.drawable.checkbox_off_background;
if (isChecked)
{
btnDrawable = android.R.drawable.checkbox_on_background;
}
checkBoxShowPwd.setButtonDrawable(btnDrawable);
}
});
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- 碎片中的onCreateOptionsMenu
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- DSL元素android.dataBinding。enabled'已过时,已被'android.buildFeatures.dataBinding'取代
- ConstraintLayout:以编程方式更改约束
- PANIC: AVD系统路径损坏。检查ANDROID_SDK_ROOT值
- 如何生成字符串类型的buildConfigField
- Recyclerview不调用onCreateViewHolder
- Android API 21工具栏填充
- Android L中不支持操作栏导航模式
- 如何在TextView中添加一个子弹符号?
- PreferenceManager getDefaultSharedPreferences在Android Q中已弃用
- 在Android Studio中创建aar文件