【问题标题】:Spinner text size does not change?微调器文本大小不会改变?
【发布时间】:2013-05-17 15:11:47
【问题描述】:

我无法使用以下代码更改微调器的文本大小或颜色:

<Spinner 
    android:id="@+id/spinner1"
    style="@style/submitspinner"
    android:layout_weight="2"
    android:entries="@array/a_code"
    android:prompt="@string/p_code" />

风格:

<style name="submitspinner" parent="@android:TextAppearance.Widget.TextView.SpinnerItem">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">match_parent</item>
    <item name="android:layout_margin">10sp</item> 
    <item name="android:textColor">@android:color/holo_blue_dark</item>
    <item name="android:textSize">@dimen/pt</item> 
</style>

看起来一样,如何增加文本大小并更改微调器的颜色?

【问题讨论】:

    标签: android android-layout styles android-spinner


    【解决方案1】:

    仅通过 XML

    只是为了帮助其他人,以防他们在 XML 中静态设置其 Spinner 条目。

    如果您通过代码创建 Spinner,但如果您通过 XML 设置 Spinner 条目,即使用android:entries,则上述答案有效,那么您可以通过以下两种主题设置调整文字大小和其他属性:

    在您的 res/values/styles.xml 中

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <style name="AppBaseTheme" parent="android:Theme.Holo">
        </style>
    
        <!-- Application theme. -->
        <style name="AppTheme" parent="AppBaseTheme">
    
            <!-- For the resting Spinner style -->
            <item name="android:spinnerItemStyle">
                @style/spinnerItemStyle
            </item> 
    
            <!-- For each individual Spinner list item once clicked on -->
            <item name="android:spinnerDropDownItemStyle">
                @style/spinnerDropDownItemStyle
            </item>
    
        </style>
    
        <style name="spinnerItemStyle">
            <item name="android:padding">10dp</item>
            <item name="android:textSize">20sp</item>
            <item name="android:textColor">#FFFFFF</item>
        </style>
    
        <style name="spinnerDropDownItemStyle">
            <item name="android:padding">20dp</item>
            <item name="android:textSize">30sp</item>
            <item name="android:textColor">#FFFFFF</item>
        </style>
    
    </resources>
    

    【讨论】:

    • 这是一个很好的信息 [+1] .... 另外添加
    • +1 用于寻址 styles.xml。我发现大多数开发人员倾向于追求程序化解决方案,而忽略了 Android 框架中不太受欢迎的方面。
    • 如何在我的微调器上使用和应用这些样式?它对我不起作用。
    • @Tareq 您使用的是什么 SDK 版本(例如 4.0.3)?
    • 对于 AppCompat 主题只需删除 android: 就像这样 &lt;item name="spinnerDropDownItemStyle"&gt;@style/mySpinnerItemStyle&lt;/item&gt;
    【解决方案2】:

    您应该为自定义 Spinner 创建一个单独的 XML,作为 Spinner 中字符串的模板,如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/standard_spinner_format"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:textSize="@dimen/pt"
       android:textColor="@android:color/holo_blue_dark"/>
    

    然后,当您在 java 中创建 Spinner 适配器时,请执行以下操作:

    ArrayAdapter<CharSequence> typeAdapter = ArrayAdapter.createFromResource(getActivity(), 
              R.array.my_spinner_array, R.layout.custom_xml_spinner_layout); //change the last argument here to your xml above.
        typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    

    【讨论】:

    • OP 正在通过android:entries 使用静态条目来填充他的 Spinner。有一种无需通过代码设置适配器即可设置 Spinner 样式的方法。我添加了一个答案来说明如何。
    【解决方案3】:

    自定义您的微调器

    这是我曾经使用过的一个很好的教程

    http://stephenpengilley.blogspot.be/2013/01/android-custom-spinner-tutorial.html

    它有你需要的一切。

    你也有你的“风格”:

    <item name="android:layout_margin">10sp</item>
    

    将其更改为 10dp

    sp = 文字大小

    在这里你可以找到更多关于测量单位的信息

    What is the difference between "px", "dp", "dip" and "sp" on Android?

    【讨论】:

      【解决方案4】:
      <TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@android:id/text1"
      style="@style/spinnerItemStyle"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_margin="@dimen/margin_5"
      android:ellipsize="marquee"
      android:layoutDirection="ltr"
      android:padding="@dimen/padding_5"
      android:singleLine="true"
      android:textSize="@dimen/textsize_base" />
      
       adapter?.setDropDownViewResource(R.layout.spinner_text)
      spSourceAccount.adapter = adapter
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-13
        • 1970-01-01
        • 2011-10-18
        • 2012-03-17
        • 1970-01-01
        • 1970-01-01
        • 2019-06-21
        相关资源
        最近更新 更多