首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Android中更改微调器的布局

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

Stack Overflow用户
提问于 2011-08-10 12:56:17
回答 3查看 21.3K关注 0票数 5

当o单击此微调器时,它会给出一个很大的下拉列表:

我想要一个非常小的视图,如第二张图片所示。就像ASP.NET中的dropdowns一样。就像这样,宽度稍微减少了一点。

我使用了以下代码。任何有助于改变第二张图片的视图都将不胜感激。

代码语言:javascript
运行
复制
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);
EN

回答 3

Stack Overflow用户

发布于 2011-08-10 13:33:38

这是一篇好文章: Customizing the Action Bar

你也可以试试这个:

设计您自己的自定义绘图微调背景,并适用于它。对于spinnerbackground.xml镜像,您可以参考SDK中的镜像。根据您的设计要求重新创建图像

"Android-sdk\platforms\android-9\data\res\drawable-hdpi\*.png“

spinnerbackground.xml

代码语言:javascript
运行
复制
<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>

然后,对于微调窗口小部件,应用您的自定义drawable:

代码语言:javascript
运行
复制
<Spinner android:background="@drawable/spinnerbackground"
         android:id="@+id/spinnerIDr"
         android:layout_height="wrap_content" 
         android:layout_width="fill_parent">
    </Spinner>

编辑:

代码语言:javascript
运行
复制
<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>

其中,popup_background是:

将微调器文本的自定义布局设计为(名称: custom_spiner.xml)

代码语言:javascript
运行
复制
<?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>

并将其用作

代码语言:javascript
运行
复制
adapter.setDropDownViewResource(R.layout.custom_spiner);

在你的代码中。

编辑2:

如果您想使用java代码来实现这一点,请阅读关于PopupWindow

可能会很有用:custom-spinner

票数 10
EN

Stack Overflow用户

发布于 2011-08-10 14:00:38

请按照以下步骤操作。我已经实现了这一点。

(1)请勿使用微调器。相反,使用背景设置为"@android:drawable/btn_dropdown“的按钮。此按钮看起来与本机微调器完全相同。如果您希望它看起来有所不同,请使用您自己的资源。

(2)您需要重写对话框类并在单击按钮时调用它。在扩展的Dialog类的构造函数中,您可以使用自己的布局资源。

代码语言:javascript
运行
复制
this.setContentView(R.layout.dropdownlist);

您还可以使用以下代码更改窗口外观

代码语言:javascript
运行
复制
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.width = dlgWidth;
lp.height = dlgHeight;
lp.dimAmount = 0;
getWindow().setAttributes(lp);
getWindow().setBackgroundDrawableResource(mBackgroundResId);

(3)你可以在你的自定义布局中有一个列表视图,在列表的"OnItemClickListener“上,关闭对话框,做你需要做的进一步的事情。

我希望这能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2014-02-11 21:50:59

在微调器标记中添加属性

android:dropDownWidth="150dp"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7006081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档