Android的微调尺寸非常大(Android Spinner Size very large)

2019-08-04 08:06发布

我试图得到一个ICS微调喜欢在我的应用程序,玩好几个小时,最后我用HoloEverywhere得到这个,它的工作,但我有一个小disign问题,是微调不是其包裹内容正如我在XML设置,默认情况下是这样的:

真的,我GOOGLE了好几个小时了,而我发现的是,如何调整微调的项目,而不是观点本身,就意味着我要微调调整到所选择的项目大小是这样的:

这里是我的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>

Answer 1:

微调有最大宽度他的项目,但在大多数家长宽度(上layout_width = WRAP_CONTENT)。 您可以创建在org.holoeverywhere.widget包和覆盖方法measureContentWidth CustomSpinner类:

@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;
}


文章来源: Android Spinner Size very large