如何在Android中更改微调器的布局

Roc*_*kin 5 android

当点击这个微调器时,它会给出一个很大的下拉:

在此输入图像描述

我想要一个非常小的视图,如第二张图片.就像ASP.NET中的下拉菜单一样.像这样宽度稍微减少.

在此输入图像描述

我使用了以下代码.任何帮助改变第二图像的视图将不胜感激.

Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       this, R.array.planets_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)

Pan*_*mar 9

这是一篇好文章: 自定义操作栏

你也可以尝试这个:

为旋转器背景设计您自己的定制drawable并应用于它.对于spinnerbackground.xml映像,您可以引用SDK中的映像.根据您的设计要求重新创建图像

"Android的SDK \平台\ Android的9\DATA \水库\绘制,华电国际\*.PNG"

spinnerbackground.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:state_window_focused="false" android:state_enabled="true"
        android:drawable="@drawable/wlbtn_dropdown_normal" />
    <item
        android:state_window_focused="false" android:state_enabled="false"
        android:drawable="@drawable/wlbtn_dropdown_disabled" />
    <item
        android:state_pressed="true"
        android:drawable="@drawable/wlbtn_dropdown_pressed" />
    <item
        android:state_focused="true" android:state_enabled="true"
        android:drawable="@drawable/wlbtn_dropdown_selected" />
    <item
        android:state_enabled="true"
        android:drawable="@drawable/wlbtn_dropdown_normal" />
    <item
        android:state_focused="true"
        android:drawable="@drawable/wlbtn_dropdown_disabled_focused" />
    <item
        android:drawable="@drawable/wlbtn_dropdown_disabled" />
</selector>
Run Code Online (Sandbox Code Playgroud)

然后为微调框小部件应用您的自定义drawable:

<Spinner android:background="@drawable/spinnerbackground"
         android:id="@+id/spinnerIDr"
         android:layout_height="wrap_content" 
         android:layout_width="fill_parent">
    </Spinner>
Run Code Online (Sandbox Code Playgroud)

编辑:

<Spinner android:background="@drawable/spinnerbackground"
         android:id="@+id/spinnerIDr"
         android:popupBackground="@drawable/popup_background"
         android:layout_height="wrap_content" 
         android:layout_width="fill_parent">
    </Spinner>
Run Code Online (Sandbox Code Playgroud)

popup_background的位置是: 在此输入图像描述

为微调文本设计自定义布局为(name:custom_spiner.xml)

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="4dp"
    android:textSize="14sp"
    android:typeface="serif"
    android:singleLine="true"
    android:layout_marginLeft="2dip"
    android:layout_marginRight="5dip"
    android:ellipsize="marquee"
    android:textColor="#000000">
</TextView>
Run Code Online (Sandbox Code Playgroud)

并用它作为

adapter.setDropDownViewResource(R.layout.custom_spiner);
Run Code Online (Sandbox Code Playgroud)

在你的代码中.

编辑2:

如果你想用java代码读取PopupWindow

并且可能很有用:自定义微调器