我试图在actionBar的actionMode中创建一个下拉式微调器。
有些项目中有大量字符,有些只是少数。
在选择短项目时,我希望看到微调器占据项目占用的空间,但实际上,它需要与最大项目相同的大小。
不仅如此,如果文字太长,它也不会允许使用选框效果显示所有内容。
我尝试为微调器项目制作自定义布局,并将其设置为" wrap_content"因为它的宽度,但它不起作用。
这是一个基于Android原始simple_spinner_item.xml文件的示例XML文件:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
style="?android:attr/spinnerItemStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:singleLine="true"
android:textAlignment="inherit" />
如何让微调器只占用当前所选项目所需的空间?
另外,我应该如何处理带有长文本的微调器项目(某些语言使文本很难缩短)?
我应该使用PopupMenu吗?
答案 0 :(得分:0)
不确定是否有这个帮助,但可能设置微调器宽度来包装内容
<Spinner
android:id="@+id/spinner_class"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
答案 1 :(得分:0)
这对我有用。重要的是这个。将上面的代码放在您的适配器上,并使用selectedItemPosition
从对象数组中选择文本。
int selectedItemPosition = position;
if (parent instanceof AdapterView) {
selectedItemPosition = ((AdapterView) parent)
.getSelectedItemPosition();
}
以下给出实例。
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = getLayoutInflater();
final View spinnerCell;
if (convertView == null) {
// if it's not recycled, inflate it from layout
spinnerCell = inflater.inflate(R.layout.layout_spinner_cell, parent, false);
} else {
spinnerCell = convertView;
}
int selectedItemPosition = position;
if (parent instanceof AdapterView) {
selectedItemPosition = ((AdapterView) parent)
.getSelectedItemPosition();
}
TextView title = (TextView) spinnerCell.findViewById(R.id.spinnerTitle);
title.setText(titles[selectedItemPosition]);
return spinnerCell;
}
如果您需要说明,请点击此链接:http://coding-thoughts.blogspot.in/2013/11/help-my-spinner-is-too-wide.html