我正试图在我的应用程序中找到一个ICS微调器,并且玩了几个小时,最后我正在使用HoloEverywhere来获得它,它正在工作,但我有一点设计问题,是旋转器没有包装它我在xml中设置的内容,默认情况如下:
真的我用谷歌搜索了几个小时,我发现的是如何调整微调器项目而不是视图本身,这意味着我希望将微调器调整到所选的项目大小,如下所示:
这是我的XML:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal" >
<org.holoeverywhere.widget.Spinner
android:id="@+id/spnCities"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="10dp"
/>
<TextView
android:id="@+id/tvCities"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:text="@string/city"
android:textAppearance="?android:attr/textAppearanceSmall" />
</RelativeLayout>
Spinner的项目最大宽度,但最多为父宽度(在layout_width = wrap_content上)。您可以在org.holoeverywhere.widget包中创建CustomSpinner类,并覆盖方法measureContentWidth:
@Override
int measureContentWidth(SpinnerAdapter adapter, Drawable background) {
if (adapter == null) {
return 0;
}
View view = adapter.getView(getSelectedItemPosition(), null, this);
if (view.getLayoutParams() == null) {
view.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
}
view.measure(MeasureSpec.makeMeasureSpec(0,
MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0,
MeasureSpec.UNSPECIFIED));
int width = view.getMeasuredWidth();
if (background != null) {
Rect mTempRect = new Rect();
background.getPadding(mTempRect);
width += mTempRect.left + mTempRect.right;
}
return width;
}