如何使Spinner下拉菜单全宽?

时间:2019-07-11 07:48:22

标签: android android-spinner

我有XML中的Spinner代码:

<Spinner
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:theme="@style/ThemeOverlay.AppCompat.Light"
    android:dropDownWidth="match_parent"
    android:spinnerMode="dropdown" />

但是由于显示图标,下拉宽度被裁剪。如何使它像父母一样全宽?

enter image description here

2 个答案:

答案 0 :(得分:0)

我可以通过编程解决它:

parentLayout.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        if (Build.VERSION.SDK_INT > 16) {
            parentLayout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        } else {
            parentLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        }

        spinnerDropdown.setDropDownWidth(parentLayout.getWidth());
    }
});

答案 1 :(得分:0)

基于兰迪的解决方案

21或以上的目标设备

可重复使用的扩展程序

fun ViewGroup.addViewObserver(function: (View) -> Unit) {
val view = this
view.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
    override fun onGlobalLayout() {
        view.viewTreeObserver.removeOnGlobalLayoutListener(this)
        function.invoke(view)
    }
})

}

活动中

fromGrade.addViewObserver {
            spnGrade.dropDownWidth = it.width
}