我创建了一个带下拉列表的微调器,我使用自定义数组适配器来填充下拉列表。 由于某种原因,下拉高度占据整个屏幕。即使下拉列表只有2行。
我尝试过设置。但没用。知道为什么吗?
<Spinner
android:id="@+id/sample"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:background="@drawable/spinner"
android:dropDownWidth="618dp"
android:dropDownHeight="468dp"
</Spinner>
编辑:我发现了问题。因为sample_dialog是一个相对布局。如果我把它改成线性布局它工作正常。但是为什么我不能使用相对布局?
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
View view = inflater.inflate(R.layout.sample_dialog, null);
答案 0 :(得分:1)
在您的活动中使用我的功能:
dimens.xml:
<dimen name="my_dimen">140dp</dimen>
我的活动:
private void SpinnerHeight(Spinner spinner) {
try {
Field popup = Spinner.class.getDeclaredField("mPopup");
popup.setAccessible(true);
// Get private mPopup member variable and try cast to ListPopupWindow
android.widget.ListPopupWindow popupWindow = (android.widget.ListPopupWindow) popup.get(spinner);
// Set popupWindow height to 140dp
int altoSpinner = (int) getResources().getDimension(R.dimen.my_dimen);
popupWindow.setHeight(altoSpinner);
} catch (NoClassDefFoundError | ClassCastException | NoSuchFieldException | IllegalAccessException e) {
// silently fail...
}
}
My_spinner.setAdapter(adapterData);
SpinnerHeight(My_spinner);
答案 1 :(得分:0)
因为在您的微调器中,您在dropDownWidth
中指定了dropDownHeight
和some dp value
,它占据了整个屏幕。
删除您的问题将被解决,因为它会自动换行dropDownWidth
和dropDownHeight
。所以,spinner代码应该是这样的,
<Spinner
android:id="@+id/sample"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.7"
android:background="@drawable/spinner"
</Spinner>