如何更改Android微调器分隔器颜色

时间:2015-02-03 07:37:28

标签: android android-spinner android-dialog

我已经搜索了很多,以找到我的查询的正确答案,但遗憾的是没有解决方案。

我有一个Spinner,

<Spinner
    android:id="@+id/dropdown_payment_methods"
    android:layout_width="match_parent"
    android:layout_height="@dimen/height_list_of_societies_xhdpi"
    android:gravity="center"
    android:layout_gravity="center"
    android:layout_marginLeft="@dimen/margin_left_right_dropdown_payment_methods_xhdpi"
    android:layout_marginRight="@dimen/margin_left_right_dropdown_payment_methods_xhdpi"
    android:entries="@array/various_payment_methods"
    android:popupBackground="@android:color/white"
    android:spinnerMode="dialog" />

注意:我没有打开我的Spinner作为默认下拉选项,而是像对话框一样。我能找到的最接近的参考文献是下面的链接。

Android spinner divider color

但它也提到该样式仅适用于默认下拉选项。

当我打开Spinner作为对话框时,需要帮助我如何自定义分隔符颜色和高度。

2 个答案:

答案 0 :(得分:0)

创建自定义项目布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background_spinner_data" >
    <TextView
        android:id="@+id/spinner_item"
        style="@style/TextNormal14Grey"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:ellipsize="end" />
<TextView
        android:id="@+id/border"
        android:background="@android:color/black"
        android:layout_width="fill_parent"
        android:layout_height="2dp"
        android:ellipsize="end" />

</RelativeLayout>

边框对应于您的分隔线。

然后使用数组适配器

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.custom_item,R.id.spinner_item,getResources.getStringArray(R.id.various_payment_methods));

然后将其设置为活动中的微调器

((Spinner)findViewById(R.id.dropdown_payment_methods)).setAdapter(adapter);

答案 1 :(得分:0)

Dialog微调器使用AlertDialog显示其内容。 AlertDialog引用了AlertController,它控制对话框中的ListView。 您需要访问该列表视图以更改微调器的分隔颜色。而且似乎唯一可以访问Listview的方法是通过扩展ArrayAdapter来创建自定义微调器适配器。

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) { 
    removeDividers(parent);
    ..
}
private void removeDividers(View view) {
    if (view instanceof ListView) {
        ((ListView) view).setDivider(new ColorDrawable(ContextCompat.getColor(getContext(), android.R.color.holo_blue_dark)));
        ((ListView) view).setDividerHeight(10);
    }
}
相关问题