android - 以编程方式更改 Spinner 样式

标签 android android-layout android-spinner

我需要实现单击按钮时更改应用程序主题的功能。 我已经成功更改了按钮、编辑文本和 TextView 的样式。但面临着改变 Spinner 样式的问题。

唯一成功的更改是背景颜色的更改:

spinnerRoutes.setBackgroundResource(R.drawable.dark_theme_spinner_background);

但是仅标题行的背景发生了变化。我还需要更改行和项目的文本颜色,以及微调器行的背景

我已经尝试过很多类似的 stackoverflow 解决方案,但没有一个有效。

是否可以通过编程方式更改微调器的样式?

最佳答案

如果你想自定义微调器的下拉菜单,你需要重写适配器类中的 getView 函数。另外,如果你想控制 Spinnner 上显示的文本,你需要这个 spinner.onItemSelectedListener() 并在回调方法中修改 TextView

自定义微调器下拉菜单的示例代码:

     @Override
        public View getDropDownView (int position, View convertView, ViewGroup parent) {

            /**The Adapter's view to be supplied for the spinner when constructing a spinner. */
            View view = super.getView(position, convertView, parent);
            TextView listView = (TextView) view.findViewById(android.R.id.text1);

            listView .setBackgroundColor(Color.parseColor(fontBack_BgnColor));

            listView .setHeight((int) heightPixels);
            listView .setGravity(Gravity.CENTER);
            listView .setTextSize(TypedValue.COMPLEX_UNIT_PX, 20);
            listView .setTextColor(Color.parseColor(fontColor));
            listView .setText(super.getItem(position));
            return view;
        }

自定义微调器文本(出现在微调器顶部的文本):

@Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {

                ((TextView) view).setTextSize(TypedValue.COMPLEX_UNIT_PX, 25);
                ((TextView) view).setTextColor(Color.parseColor(spinnerTextColor));

            }

关于android - 以编程方式更改 Spinner 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30481148/

相关文章:

android - 无法从网络安全配置 XML 中引用原始资源

Android:键入时保持 TextInputEditText 在 View 中

java - android studio 中无法实例化一个或多个类错误,因此设计未显示

android - 带有 "select option"的微调器,但它应该显示为空白

android runonuithread() 函数不执行

android - 为什么 Float.isNaN(Float.NaN) 在旧的 LG 手机 Android 2.3.7 上是 "false"?

android - 尝试使用 adb 递归地将 Android 文件拉入 Windows PC 时出现特殊文件名问题

android - ScrollView 正在捕捉谷歌地图的触摸事件

android - 更改sherLock Spinner控件android的样式

android - 如何通过滚动仅显示微调器中的前 3 个项目和其他项目?