Android 微调器下拉式自定义

Android 微调器下拉式自定义,android,android-layout,Android,Android Layout,我使用带有微调器(下拉)的ActionBar,但问题是选择区域上的文本本身不应该是列表中的元素之一。此外,我正在使用自定义适配器设置微调器中元素的样式,该适配器还自定义选择区域 也许一张截图会是最好的。这就是我想要实现的目标: 这就是我目前拥有的: 来自自定义适配器的代码段: public class CategoriesDropDownAdapter extends BaseAdapter{ @Override public View getView(int positi

我使用带有微调器(下拉)的ActionBar,但问题是选择区域上的文本本身不应该是列表中的元素之一。此外,我正在使用自定义适配器设置微调器中元素的样式,该适配器还自定义选择区域

也许一张截图会是最好的。这就是我想要实现的目标:

这就是我目前拥有的:

来自自定义适配器的代码段:

public class CategoriesDropDownAdapter extends BaseAdapter{

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = mInflater.inflate(R.layout.categories_drop_down_item, parent, false);
        }        
        Category category = getCategory(position);
        ImageView icon = (ImageView) convertView.findViewById(R.id.catIcon);
        TextView title = (TextView) convertView.findViewById(R.id.catTitle);        
        //setting icon, title and background color
        icon.setImageDrawable(category.getIcon());        
        title.setText(category.getTitle());
        convertView.setBackgroundColor(category.getBackgroundColor());      
        //setting the width of the drop-down to take all the layout width
        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics metrics = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(metrics);     
        convertView.setLayoutParams(new LayoutParams(metrics.widthPixels, 100));

        return convertView;
    }
}

使用自定义适配器时,如何避免自定义选择区域(栏上的区域本身)?我希望对该区域进行不同的自定义(例如,右下角没有三角形)。

您必须在styles.xml中为微调器组件应用样式

<resources>
<style name="spinner_style">
     // Change background
    <item name="android:background">@drawable/img</item>

    <item name="android:dropDownWidth">fill_parent</item>
    <item name="android:showDividers">beginning|middle|end</item>
    <item name="android:alignmentMode">alignBounds</item>
    <item name="android:dividerHeight">2dp</item>
    <item name="android:scrollbars">none</item>
    <item name="android:scrollbarAlwaysDrawVerticalTrack">false</item>
    <item name="android:scrollbarTrackVertical">@android:color/transparent</item>
    <item name="android:dropDownSelector">@android:color/white</item>
    <item name="android:requiresFadingEdge">none</item>
</style>
</resources>

//改变背景
@可抽出式/img
填补家长的空缺
开始|中间|结束
对齐边界
2dp
没有一个
假的
@android:彩色/透明
@android:彩色/白色
没有一个
在UI Xml文件中

 <Spinner
    android:id="@+id/ics_spinner"
    style="@style/spinner_style"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:scrollbars="none" />

如果我的Spinner/ActionBar不是用XML描述的,而是用代码描述的,该怎么做?actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u列表);setListNavigationCallbacks(新的CategoriesDropDownAdapter(…),这个);