我有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" />
但是由于显示图标,下拉宽度被裁剪。如何使它像父母一样全宽?
答案 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
}