更改微调器箭头,Appcompat v21

Cha*_*ikh 6 android styling spinner android-appcompat

我有以我的自定义主题为主题的活动,但对于微调器我选择用Appcompat v21设计它,但我得到了这个: 在此输入图像描述

那么如果有一种方法,如何将Spinner箭头更改为黑色或蓝色?

我发现这是类似的问题,但没有任何答案:https://stackoverflow.com/questions/28561105/add-custom-spinner-arrow 这里是我的微调:

<Spinner
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/spinner2"
        android:layout_marginTop="10dp"
        android:layout_centerInParent="true" />
Run Code Online (Sandbox Code Playgroud)

我用它来设置微调器的样式:

 <style name="MyTheme.SpinnerAppTheme" parent="Widget.AppCompat.Spinner">
    </style>
Run Code Online (Sandbox Code Playgroud)

这是我如何使用适配器

   ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                getBaseContext(), R.array.listMedRes, android.R.layout.simple_spinner_item);
Run Code Online (Sandbox Code Playgroud)

我只是想以旋转器为主题,非常感谢

Hen*_*aWD 27

可能会迟到但迟​​到总比没有好.回答你的问题:"有没有办法只在微调器中使用它?".答案是肯定的,请参阅下面的代码.

将此代码添加到主题或样式文件中

<style name="customSpinnerTheme" parent="yourAppThemeThatUseAppCompat21">
    <item name="colorControlNormal">#eaeaea</item>
    <item name="colorControlActivated">#000000</item>
    <item name="colorControlHighlight">#000000</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后在使用微调器的XML中添加此行

android:theme="@style/customSpinnerTheme"
Run Code Online (Sandbox Code Playgroud)

例如

<Spinner
    android:theme="@style/customSpinnerTheme"
    android:id="@+id/spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="8dp"
    android:layout_marginRight="8dp"
    android:spinnerMode="dialog" />
Run Code Online (Sandbox Code Playgroud)

  • 在分享知识永远不会太晚,谢谢,这可能会有助于他人 (7认同)

jag*_*han 9

由于您使用的是AppCompat-v21,因此您可以利用新的材质设计样式属性:

colorPrimary:应用栏的应用商标颜色,适用于操作栏

colorPrimaryDark:状态栏和上下文应用栏的较暗变体

colorAccent:允许您定义主要品牌颜色的明亮补充.默认情况下,这是应用于框架控件的颜色(通过colorControlActivated)

colorControlNormal:在正常状态下应用于框架控件的颜色

colorControlActivated:应用于其激活的框架控件

这是一个例子

styles.xml

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- colorPrimary is used for the default action bar background -->
    <item name="colorPrimary">@color/primary</item>
    <!-- colorPrimaryDark is used for the status bar -->
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <!-- colorAccent is used as the default value for colorControlActivated which is used to tint widgets -->
    <item name="colorAccent">@color/accent</item>
    <item name="colorControlNormal">@color/primary</item>
</style>
Run Code Online (Sandbox Code Playgroud)

colors.xml

<resources>
    <color name="primary">#ff0000ff</color>
    <color name="primary_dark">#ff0000af</color>
    <color name="accent">#870000ff</color>
    <color name="white">#ffffffff</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

这是它的外观

在此输入图像描述

希望这可以帮助.

  • 这对于整个活动使用appcompat主题,是否只能在微调器中使用它? (5认同)

Tan*_*eja 7

有一种方法可以改变你的箭头颜色...实际上它不是颜色你可以用蓝色图像改变这个图像.. myspinner_selector在你的drawable文件夹中创建一个xml文件并粘贴

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

  <item><layer-list>
        <item><shape>
                <gradient android:angle="90" android:endColor="#ffffff" android:startColor="#ffffff" android:type="linear" />

                <stroke android:width="1dp" android:color="#504a4b" />

                <corners android:radius="5dp" />

                <padding android:bottom="3dp" android:left="3dp" android:right="3dp" android:top="3dp" />
            </shape></item>
        <item ><bitmap android:gravity="bottom|right" android:src="@drawable/blue_arrow" />   // you can use any other image here, instead of default_holo_dark_am
        </item>
      </layer-list></item>

 </selector>  
Run Code Online (Sandbox Code Playgroud)

blue_arrow是一个图像,并在您的样式文件中添加此样式

 <style name="spinner_style" >
        <item name="android:background">@drawable/myspinner_selector</item>
        <item name="android:layout_marginLeft">5dp</item>
        <item name="android:layout_marginRight">5dp</item>
        <item name="android:layout_marginBottom">5dp</item>
        <item name="android:paddingLeft">5dp</item>
        <item name="android:paddingTop">5dp</item>
        <item name="android:paddingBottom">5dp</item>

        </style>
Run Code Online (Sandbox Code Playgroud)

最后在你的微调器中添加这个样式

 <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        style="@style/spinner_style"           

         />
Run Code Online (Sandbox Code Playgroud)

它看起来像这样.你需要自定义 在此输入图像描述