在android中手动设置微调下拉列表的宽度
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/1551951/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Manually set width of spinner dropdown list in android
提问by aspartame
Is it possible to set the width of a spinner dropdown list in code? I have a spinner populated with integers, and it does not look good with the list expanding to full width. Can I set the width to wrap the content somehow?
是否可以在代码中设置微调下拉列表的宽度?我有一个填充了整数的微调器,并且列表扩展到全宽时看起来不太好。我可以设置宽度以某种方式包装内容吗?
Spinner hSpinner = (Spinner) timerView.findViewById(R.id.timer_hour_spinner);
ArrayList<Integer> hList = new ArrayList<Integer>(21);
for (int i = 0; i <= 20; i++) { hList.add(i); }
ArrayAdapter hAdapter = new ArrayAdapter(RemindMe.this, android.R.layout.simple_spinner_item, hList);
hAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
hSpinner.setAdapter(hAdapter);
Thanks!
谢谢!
Linus
莱纳斯
采纳答案by CommonsWare
You can change the width of anything in code by adjusting its LayoutParams
. The details of that varies by container (LinearLayout
vs. RelativeLayout
vs. ...).
您可以通过调整代码中的任何内容来更改其宽度LayoutParams
。详细信息因容器而异(LinearLayout
vs. RelativeLayout
vs. ...)。
However, I'm confused why you want to change the width "in code". Why not just set the width to be wrap_content
in the layout XML?
但是,我很困惑为什么要“在代码中”更改宽度。为什么不将宽度设置wrap_content
在布局 XML 中?
回答by JPMagalhaes
Just use:
只需使用:
setDropDownWidth(desiredWidth);
回答by PeteH
It is straightforward to control the spinner dropdown appearance. Try this:
控制微调器下拉外观很简单。尝试这个:
//Step 1. create the drop down list
static List<String> special_Spinner_Display_List = new ArrayList<String>();
// add your values to the list...(this is best done using a for loop)
special_Spinner_Display_List.add(item1);
special_Spinner_Display_List.add(item2); //etc., etc.
//Step 2. build the spinner
ArrayAdapter arrayAdapter_special = new ArrayAdapter(this,
R.layout.your_special_spinner, special_Spinner_Display_List);
arrayAdapter_special.setDropDownViewResource(R.layout.special_spinner_dropdown);
specialSpinner.setAdapter(arrayAdapter_special);
//Step 3. create an XML layout file called special_spinner_dropdown where you can
//style to your heart's content. Here's an example:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/SpinnerDropdown"
style="?android:attr/spinnerDropDownItemStyle"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="#D5ECED"
android:ellipsize="marquee"
android:singleLine="true"
android:textSize="24sp"
android:textStyle="bold"
android:textColor="@color/black" />
That's it. Lemme know how it works!
就是这样。让我知道它是如何工作的!
回答by abhishesh
Set dropdown width in xml file of spinner using the tag
使用标签在微调器的 xml 文件中设置下拉宽度
android:dropDownWidth="@dimen/desired_width"
android:dropDownWidth="@dimen/desired_width"
Explaination :
说明:
mDropDownWidth = pa.getLayoutDimension(R.styleable.Spinner_dropDownWidth,
ViewGroup.LayoutParams.WRAP_CONTENT);
this field is used for dropdown width when spinner item is initialized in Spinner class
在 Spinner 类中初始化微调项时,此字段用于下拉宽度
for programatically changing spinner dropdown width above api level 16, use
要以编程方式更改 api 级别 16 以上的微调下拉菜单宽度,请使用
mSpinner.setDropDownWidth(size_in_pixel);