【问题标题】:How to style each item of a Spinner in Android (fontColor, typeface)如何在 Android 中为 Spinner 的每个项目设置样式(字体颜色、字体)
【发布时间】:2014-11-20 23:43:12
【问题描述】:

我想显示用于选择 fontColor 和 fontFamily 的微调器。目的是让用户预览微调器内的字体/颜色。所以我需要单独设置微调器的每个项目。

我怎样才能做到这一点?

【问题讨论】:

  • 将该逻辑放入您的SpinnerAdapter,尤其是getView()getDropDownView()
  • 在您设置适配器的位置显示您的代码。
  • ArrayAdapter<CharSequence> adapterFontColor = ArrayAdapter.createFromResource(this, R.array.colors, R.drawable.spinner); adapterFontColor.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp_fontColor.setAdapter(adapterFontColor);
  • 有人可以帮忙吗?提前致谢

标签: android user-interface spinner adapter android-ui


【解决方案1】:

根据您的问题,我猜您将在 Android 中自定义 Spinner。

首先,请参考这个xml代码sn-p。

activity_main.xml
 <Spinner
                    android:id="@+id/service_spinner"
                    style="@style/Drop_Down_Spinner_Style" />

styles.xml
<style name="Drop_Down_Spinner_Style">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">@dimen/spinner_normal_height</item>
        <item name="android:background">@drawable/spinner_bg1</item>
        <item name="android:dropDownWidth">match_parent</item>
    </style>

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

    <item android:state_pressed="true"><shape android:shape="rectangle">
            <stroke android:width="3dip" android:color="#ffeb4175" />

            <solid android:color="@color/transparent" />

            <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
        </shape></item>
    <item android:state_enabled="true"><shape android:shape="rectangle">
            <stroke android:width="1dip" android:color="@color/white" />

            <solid android:color="@color/transparent" />

            <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp" />
        </shape></item>

</selector>


This is custom adapter class for Spinner
    public class NailsSpinnerAdapter extends BaseAdapter {

    ...
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View vi = convertView;
            if (convertView == null) {
                vi = inflater.inflate(R.layout.spinner_item, parent, false);
            }

            SpinnerModel item = items.get(position);
            TextView item_title = (TextView) vi
                    .findViewById(R.id.textview_in_spinner_item);
            item_title.setText(item.getValue());

            return vi;
        }

        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            View vi = convertView;
            if (convertView == null) {
                vi = inflater
                        .inflate(R.layout.spinner_dropdown_item, parent, false);
            }

            SpinnerModel item = items.get(position);
            TextView item_title = (TextView) vi
                    .findViewById(R.id.spinner_item_text);
            item_title.setText(item.getValue());

            return vi;
        }
    ...
    }

从上面的适配器可以看出,你必须重写getView()和getDropDownView()这两个函数。

通过这样做,您可以自定义 Spinner 内的 TextView 以及下拉微调器项内的 TextView。

您可以使用 item_title.setTypeface(Null, Typeface.BOLD) 之类的东西。

希望对您有所帮助,并期待您的回复。

如果您有任何问题,请告诉我。

【讨论】:

    猜你喜欢
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 2012-09-13
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多