【问题标题】:style spinner drop down list样式微调器下拉列表
【发布时间】:2015-06-19 16:07:50
【问题描述】:

我在设置微调器样式时遇到了几个问题

  1. 我需要更改微调器的可绘制对象(选定视图) 当用户打开下拉列表时(我尝试了几个选择器 具有不同的状态,但没有任何工作正常)
  2. 我无法更改下拉列表中项目的文本颜色(我可以更改 颜色,但我需要为所选值使用不同的颜色)你可以看到更多 详情见下方链接。
  3. 我无法从下拉列表中删除分隔线。

我不想使用带有按钮和列表的自定义布局来模拟微调器的功能(但如果没有解决方案我会这样做)。

style.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">

<style name="AppBaseTheme" parent="@android:style/Theme.Black.NoTitleBar.Fullscreen">
    <item name="android:background">@android:color/transparent</item>
    <item name="android:windowBackground">@android:color/white</item>
    <item name="android:colorBackground">@android:color/white</item>
    <item name="android:dropDownSpinnerStyle">@style/SpinnerTheme</item>
</style>

<style name="SpinnerAppTheme" parent="android:Widget.Holo.Light.Spinner">
    <item name="android:background">@drawable/spinner_background_holo_light</item>
    <item name="android:dropDownSelector">@drawable/list_selector_holo_light</item>
    <item name="android:dropDownListViewStyle">@style/mySpinnerStyle</item>
</style>

<style name="mySpinnerStyle" parent="android:Widget.ListView.DropDown">
     <item name="android:divider">@null</item>
    <item name="android:dividerHeight">0px</item>
</style>

<style name="Theme_Dialog_Translucent" parent="android:Theme.Dialog">
    <item name="android:windowBackground">@null</item>
    <item name="android:background">@android:color/white</item>
    <item name="android:windowTitleStyle">@style/dialog_title_style</item>
</style>

<style name="Theme_Dialog_Measurment_Data_Dialog" parent="android:Theme.Dialog">
    <item name="android:windowBackground">@null</item>
    <item name="android:background">@color/general_background_color</item>
    <item name="android:windowTitleStyle">@style/dialog_title_style</item>
</style>

<style name="dialog_title_style" parent="android:Widget.TextView">
    <item name="android:textColor">@android:color/black</item>
</style>

 <Spinner
     android:id="@+id/res_spinner"
     android:layout_width="0dp"
     android:layout_height="30dp"
     android:layout_weight="60"
     android:background="@drawable/ref_spinner_selector"
     android:dropDownVerticalOffset="1dp"
     android:dropDownWidth="60dp"
     android:gravity="center"
     android:popupBackground="@null"
     android:spinnerMode="dropdown"/>

how the spinner needs to be look like

how the spinner looks like now

谢谢

更新: 如果有人在自定义微调器时遇到问题

我设法使用 ListPopupWindow 解决了所有问题

private void initPopup()
{
    _lp = new ListPopupWindow(getActivity());
    _lp.setAnchorView(_resTitle);

    ColorDrawable cd = new ColorDrawable(getResources().getColor(android.R.color.transparent));

    _lp.setBackgroundDrawable(cd);
    _lp.setOnDismissListener(new OnDismissListener()
    {

        @Override
        public void onDismiss()
        {
            _resTitle.setSelected(false);
        }
    });
    _listPopupAdapter = new DataSetListAdapter(getActivity(), _resData);
    _lp.setAdapter(_listPopupAdapter);
}

点击

案例R.id.res_title:

            if (!_lp.isShowing())
            {
                _resTitle.setSelected(true);
                _lp.setOnItemClickListener(this);
                _lp.show();
                _lp.getListView().setDivider(null);
                _lp.getListView().setDividerHeight(0);
            }
            else
            {
                _resTitle.setSelected(false);
                _lp.dismiss();
            }
            break;

【问题讨论】:

    标签: android styles spinner


    【解决方案1】:

    Android 不允许自定义微调器 UI。所以 如果你想修改你的微调器 UI,然后使用 android 弹出视图,你可以在其中放置你的样式 UI,效果类似于下拉菜单 例子

      spinner=(EditText)findViewById(R.id.txt_Spinner);
    
    
        spinner.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
    
                p = new Point();
                p.x = location[0]+(v.getHeight());
                p.y = location[1]+v.getHeight();
    
                if (p != null)
                    showPopup(statusActivity.this, p);
    
                System.out.println("show popup");
            }
        });
    
    
    
    
    // The method that displays the popup.
    private void showPopup(final Activity context, Point p) {
        int popupWidth = 300;
        int popupHeight = 500;
    
        // Inflate the popup_layout.xml
        LinearLayout viewGroup = (LinearLayout) context.findViewById(R.id.popup);
        LayoutInflater layoutInflater = (LayoutInflater) context
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View layout = layoutInflater.inflate(R.layout.popup_layout, viewGroup);
    
        // Creating the PopupWindow
        popup = new PopupWindow(context);
        popup.setContentView(layout);
        popup.setWidth(popupWidth);
        popup.setHeight(popupHeight);
        popup.setFocusable(true);
    
        // Some offset to align the popup a bit to the right, and a bit down, relative to button's position.
        int OFFSET_X = 00;
        int OFFSET_Y = 00;
    
        // Clear the default translucent background
        popup.setBackgroundDrawable(new BitmapDrawable());
    
        // Displaying the popup at the specified location, + offsets.
        popup.showAtLocation(layout, Gravity.NO_GRAVITY, p.x + OFFSET_X, p.y + OFFSET_Y);
        ((TextView)layout.findViewById(R.id.textView2)).setClickable(true);
        ((TextView)layout.findViewById(R.id.textView3)).setClickable(true);
        ((TextView)layout.findViewById(R.id.textView4)).setClickable(true);
        ((TextView)layout.findViewById(R.id.textView5)).setClickable(true);
        ((TextView)layout.findViewById(R.id.textView6)).setClickable(true);
        ((TextView)layout.findViewById(R.id.textView7)).setClickable(true);
        ((TextView)layout.findViewById(R.id.textView8)).setClickable(true);
        ((TextView)layout.findViewById(R.id.textView9)).setClickable(true);
    
    }
    

    和popup.xml

       <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/popup"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/popup_bg"
    android:orientation="vertical" >
    
    <TextView
        android:id="@+id/textView1"
        style="@style/text_orange_heading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Select Status"
        android:textAppearance="?android:attr/textAppearanceLarge" />
    
    <TextView
        android:id="@+id/textView2"
        style="@style/text_blue_contains"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:onClick="onClick"
        android:clickable="true"
        android:drawableBottom="@drawable/line_white"
        android:tag="Sleeping"
        android:text="Sleeping" />
    
    <TextView
        android:id="@+id/textView3"
        style="@style/text_blue_contains"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:onClick="onClick"
        android:clickable="true"
        android:drawableBottom="@drawable/line_white"
        android:tag="Available"
        android:text="Available" />
    
    <TextView
        android:id="@+id/textView4"
        style="@style/text_blue_contains"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:onClick="onClick"
        android:clickable="true"
        android:drawableBottom="@drawable/line_white"
        android:tag="Busy"
        android:text="Busy" />
    
    <TextView
        android:id="@+id/textView5"
        style="@style/text_blue_contains"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:onClick="onClick"
        android:clickable="true"
        android:drawableBottom="@drawable/line_white"
        android:tag="At work"
        android:text="At work" />
    
    <TextView
        android:id="@+id/textView6"
        style="@style/text_blue_contains"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:onClick="onClick"
        android:clickable="true"
        android:drawableBottom="@drawable/line_white"
        android:tag="Battery charge low"
        android:text="Battery charge low" />
    
    <TextView
        android:id="@+id/textView7"
        style="@style/text_blue_contains"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:onClick="onClick"
        android:clickable="true"
        android:drawableBottom="@drawable/line_white"
        android:tag="In meeting"
        android:text="In meeting" />
    
    <TextView
        android:id="@+id/textView8"
        style="@style/text_blue_contains"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:onClick="onClick"
        android:clickable="true"
        android:drawableBottom="@drawable/line_white"
        android:tag="TMS me later"
        android:text="TMS me later" />
    
    <TextView
        android:id="@+id/textView9"
        style="@style/text_blue_contains"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:onClick="onClick"
        android:clickable="true"
        android:drawableBottom="@drawable/line_white"
        android:tag="At the toilet"
        android:text="At the toilet" />
    
    <EditText
        android:id="@+id/textCustomize"
        style="@style/text_blue_contains"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:tag="Customize"
        android:text="Customize" />
    

    【讨论】:

    • 感谢您的回复,但我设法使用 ListPopupWindow 做到了这一点
    • 示例与弹出菜单相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 2017-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多