【问题标题】:How to customized SpinnerItemStyle with styles.xml如何使用 styles.xml 自定义 SpinnerItemStyle
【发布时间】:2016-12-29 08:11:39
【问题描述】:

我尝试使用样式文件自定义 spinnerItem。我可以更改微调器样式(背景、边框或字体颜色等),但微调器项始终具有白色文本和灰色背景。

你有什么想法吗?

ps:我不应该为此使用新的适配器。

这是我的styles.xml:

<style name="AppTheme" parent="AppTheme.Base">
    <item name="android:spinnerItemStyle">@style/SpinnerItemTheme</item>
</style>

<style name="SpinnerTheme" parent="Edit">
    <item name="android:background">@color/blueColor</item>
    <item name="android:dropDownSelector">@color/darkRedColor</item>
    <item name="android:dropDownItemStyle">@style/SpinnerItemTheme</item>
    <item name="android:spinnerItemStyle">@style/SpinnerItemTheme</item>
</style>
<style name="Edit" parent="Text.Display">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:gravity">top|left</item>
    <item name="android:textSize">20sp</item>
</style>

<style name="SpinnerItemTheme" parent="SpinnerTheme">
    <item name="android:textColor">#000000</item>
    <item name="android:background">@color/blueColor</item>
</style>

这是我的布局文件:

<android.support.v7.widget.AppCompatSpinner
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                style="@style/SpinnerTheme"
                android:prompt="@string/prompt_nation"
                android:entries="@array/countries">
                </android.support.v7.widget.AppCompatSpinner>

【问题讨论】:

  • 试试这个风格 - android-holo-colors.com
  • 已经试过了。导出了一个示例,然后我导入并运行。结果一样。
  • 试试我下面的答案可能对你有帮助

标签: android xml android-spinner android-styles


【解决方案1】:

试试这个代码:

<resources>
   <style name="customtheme" parent="@android:style/Theme.Light">
      <item name="android:spinnerItemStyle">@style/SpinnerItem</item>
      <item name="android:spinnerDropDownItemStyle">@style/SpinnerDropDownItem</item>
   </style>
   <style name="SpinnerItem">
      <item name="android:textColor">@color/your_color</item>
      <item name="android:background">@drawable/your_backgroung</item>
   </style>
   <style name="SpinnerDropDownItem">
      <item name="android:textColor">@color/your_color</item>
      <item name="android:background">@drawable/your_background</item>
   </style>
</resources>

【讨论】:

  • 什么都不做:\
  • 这有效 - 即使使用 AppCompat 基本主题。我实际上也替换了android:spinnerStyle(如果使用 AppCompat 基本主题,则只需 spinnerStyle)。 spinnerStyle 是我为微调器本身设置背景的地方。 spinnerItemStyle 允许更改微调器内文本的字体和填充等内容。
【解决方案2】:

样式.xml:

  <style name="ToolbarSpinner" parent="AppTheme">
		<item name="android:spinnerItemStyle">@style/ToolbarSpinnerItem</item>
		<item name="android:spinnerDropDownItemStyle">@style/ToolbarSpinnerDropDownItem</item>
	</style>

	<style name="ToolbarSpinnerItem" parent="TextMedium">
		<item name="android:textColor">@color/material_grey_white_1000</item>
		<item name="android:gravity">center_vertical</item>
	</style>

	<style name="ToolbarSpinnerDropDownItem" parent="TextMedium">
		<item name="android:textColor">@color/material_grey_black_1000</item>
		<item name="android:gravity">center_vertical</item>
		<item name="android:paddingRight">@dimen/space_small</item>
		<item name="android:paddingLeft">@dimen/space_small</item>
	</style>

布局:

<Spinner
  android:id="@+id/spinner"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:spinnerMode="dialog"
  android:theme="@style/ToolbarSpinner"/>

onCreateView:

spinnerAdapter = new ArrayAdapter<>(spinner.getContext(), android.R.layout.simple_spinner_item, listSource);

spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spinner.setAdapter(spinnerAdapter);

注意 ArrayAdapter 应该用 spinner.getContext() 初始化,因为这个上下文包含需要的主题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    相关资源
    最近更新 更多