如何在微调器下方设置微调器 window 位置

How to set spinner window position on below of a spinner

有没有设置默认微调器位置的方法,我只想在微调器标题下方显示我的微调器 window,但通常当我们单击微调器时,标题上方的 window 弹出窗口,那么有什么方法可以在标题下方显示弹出窗口。

对于 下拉菜单 微调框模式,你可以使用这个:

mSortingSpinner.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        mSortingSpinner.setDropDownVerticalOffset(
                mSortingSpinner.getDropDownVerticalOffset() + mSortingSpinner.getHeight());
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
            mSortingSpinner.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        } else {
            mSortingSpinner.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        }
    }
});

这会根据微调器高度设置下拉菜单的垂直偏移量。

对于这个微调器,你可以这样使用

android:dropDownVerticalOffset="40dp"

 <android.support.v7.widget.AppCompatSpinner
      android:spinnerMode="dropdown"
      android:dropDownVerticalOffset="40dp"
      android:layout_width="match_parent"
      android:layout_height="fill_parent"/>

现在下拉将根据您的要求显示。

我更喜欢使用这种方法而不是处理 ViewTreeObserver

mSortingSpinner.post(new Runnable() {
            @Override
            public void run() {
                mSortingSpinner.setDropDownVerticalOffset(mSortingSpinner.getDropDownVerticalOffset() + mSortingSpinner.getHeight());
            }
        });

这里是 Rami El-bouhiKotlin 方式的代码:

spinner.post {
  dropDownVerticalOffset += height
}