Android的supportV7中默认按钮的颜色设置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android的supportV7中默认按钮的颜色设置相关的知识,希望对你有一定的参考价值。
参考技术A 我们知道,在styles.xml文件里面可以设置主题,在主题中设置的一些颜色,将会应用到默认的AppCompat控件上,从而很简单的就可以保持整个APP在UI上的一致性。下面是一个例子:至于各种控件是如何应用这些颜色设置的,则需要经过更多的尝试了。
比如Activity导航栏默认的图标颜色是colorControlNormal,导航栏的底色是colorPrimary,沉浸式状态栏默认的颜色是colorPrimaryDark;
比如FAB的默认颜色是colorAccent;
比如AppCompatCheckBox默认的选中状态的颜色是colorAccent,而默认的未选择状态的颜色的colorControlNormal;
比如AppCompatSpinner的下拉图标的默认颜色也是colorControlNormal。
......
其实涉及到的主要的就是下面这几个参数:
那么问题来了,如果你使用蓝色的沉浸式状态栏,导航栏上的图标则使用白色,那在这个Activity中使用AppCompatCheckBox的时候,未选择状态就也是白色的,此时如果在白色的背景色下,用户就看不出这是个AppCompatCheckBox了。这时候怎么办?如下图(图中使用的是AppCompatSpinner):
其实很简单,在这个AppCompatCheckBox上使用app:theme="@style/MyCheckBox",然后在styles.xml中添加新的
但是需要注意的是,这样可能引起控件其他默认属性的变化,比如CheckBox的textSize会变成1(不使用app:theme的时候和APP的默认字体大小一样)。
android:theme和app:popupTheme的作用,以及在android 3.0以下不起作用问题的解决
如何在微调器中更改单选按钮颜色
当我使用带有单选按钮的微调器时,在单选按钮中选择颜色似乎是默认的。我想更改Android中微调器中设置的单选按钮的默认颜色。我该怎么做?
spinner的字符串文件:
<string-array name="Departments">
<item>Body Exterior</item>
<item>Body Interior</item>
<item>Chassis</item>
<item>EESE</item>
<item>Powertrain</item>
<item>Vehicle Engineering</item>
<item>Other</item>
微调器的xml文件:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal">
<Spinner
android:id="@+id/spnDepartments"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="3"
android:gravity="left" />
</LinearLayout>
用于微调器的java文件:
Spinner spnDepartments;
ArrayAdapter<CharSequence> adapter1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
spnDepartments = (Spinner) findViewById(R.id.spnDepartments);
adapter1 = ArrayAdapter.createFromResource(this,R.array.Departments,
android.R.layout.simple_spinner_item);
adapter1.setDropDownViewResource(android.R.layout.select_dialog_singlechoice);
spnDepartments.setAdapter(adapter1);
spnDepartments.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
答案
您可以通过设置主题属性colorAccent
(对于选定的单选按钮)和colorControlNormal
(对于未选择的按钮)来控制微调器内单选按钮的颜色。
通常,这些是在您的应用程序(或您的活动)主题中设置的(从清单中的android:theme
引用的样式)。但是如果你想为一个Spinner
覆盖它们,你也可以这样做。
首先,创建一个具有您想要的颜色的<style>
:
<style name="SpinnerTheme">
<item name="colorAccent">#00f</item>
<item name="colorControlNormal">#00f</item>
</style>
然后,将此样式应用为Spinner的主题:
<Spinner
android:theme="@style/SpinnerTheme"
.../>
另一答案
Android:buttonTint="@color/yourcolor"
但它仅适用于API 21或更高版本
以上是关于Android的supportV7中默认按钮的颜色设置的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 的浮动操作按钮 FAB 中保留可绘制的默认颜色
Android studio的工程默认继承AppcompatActivity类和Activity不同...