Android 自定义单个视图的主题

Android 自定义单个视图的主题,android,android-view,android-spinner,android-theme,android-styles,Android,Android View,Android Spinner,Android Theme,Android Styles,我需要在工具栏上的微调器中将微调器选定项颜色设置为白色。应用程序中所有其他微调器的颜色应保持不变 我试着跟着 styles.xml 如何仅更改工具栏中微调器的颜色?如果我可以单独在主题中完成这项工作,而不必通过编程来完成,那就更好了。在我看来,作为微调器项的布局,您使用的是框架提供的其中一项,即android.R.layout.simple\u微调器\u项 如果您查看一下,您会注意到,它将style=?android:attr/spinnerItemStyle应用于其内容视图。这意味着,在act

我需要在工具栏上的微调器中将微调器选定项颜色设置为白色。应用程序中所有其他微调器的颜色应保持不变

我试着跟着

styles.xml


如何仅更改工具栏中微调器的颜色?如果我可以单独在主题中完成这项工作,而不必通过编程来完成,那就更好了。

在我看来,作为微调器项的布局,您使用的是框架提供的其中一项,即android.R.layout.simple\u微调器\u项

如果您查看一下,您会注意到,它将style=?android:attr/spinnerItemStyle应用于其内容视图。这意味着,在activity/fragment中初始化适配器时,spinnerItemStyle将是应用于activity主题的样式,而不是在xml中显式应用的样式:

初始化适配器时:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.my_spinner_item, list);
Context wrappedContext = new ContextThemeWrapper(this, R.style.MySpinnerTheme);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(wrappedContext, android.R.layout.simple_spinner_item, list);

代替app:theme的是android:theme。@azizbekian试过了,也试过了风格,但没有很好的解释,先生!
<!-- Application theme. -->
<style name="BaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    <item name="android:spinnerItemStyle">@style/mySpinnerItemStyle</item>
</style>
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, list);
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@android:id/text1"
          style="@style/MySpinnerItemStyle"
          android:singleLine="true"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:ellipsize="marquee"
          android:textAlignment="inherit"/>
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.my_spinner_item, list);
<style name="MySpinnerTheme" parent="AppTheme">
    <item name="android:spinnerItemStyle">@style/MySpinnerItemStyle</item>
</style>
Context wrappedContext = new ContextThemeWrapper(this, R.style.MySpinnerTheme);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(wrappedContext, android.R.layout.simple_spinner_item, list);