【问题标题】:Android spinner dropdown height not wrapping to contentAndroid微调器下拉高度未包装到内容
【发布时间】:2014-07-31 04:42:07
【问题描述】:

我创建了一个带有下拉列表的微调器,并且我正在使用自定义数组适配器来填充下拉列表。 由于某种原因,下拉高度占据了整个屏幕。即使下拉列表只有 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);
}

【问题讨论】:

  • 这是垂直的LinearLayout吗?请发布您的 xml 的其余部分
  • 把你的截图和你的整个布局代码一起发布。
  • 它是水平线性布局

标签: android android-spinner


【解决方案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);

【讨论】:

    猜你喜欢
    • 2023-02-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    相关资源
    最近更新 更多