将AutoCompleteTextView下拉高度设置为底部以上60dp

时间:2018-03-17 11:52:09

标签: android

我正在尝试将AutoCompleteTextView的下拉高度设置为高于屏幕底部60dp。

displayMetrics = new DisplayMetrics();
WindowManager windowmanager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
windowmanager.getDefaultDisplay().getMetrics(displayMetrics);
int height = Math.round(displayMetrics.heightPixels / displayMetrics.density - 60);
edtSeach.setDropDownHeight(height);

这适用于运行Android 7.0的华为P9 Lite。

dropdown1

但是,当我尝试运行Android 6.0的模拟器时,它无效。

dropdown2

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用android:dropDownHeight="100dp"

  

指定dropdown的基本高度。其值可以是一个维度(例如" 12dip"),用于恒定高度,fill_parentmatch_parent用于填充屏幕高度,或wrap_content匹配下拉内容的高度。

     

可以是维度值,它是附加单位的浮点数,例如" 14.5sp"。可用单位为:px(像素),dp(与密度无关的像素),sp(基于首选字体大小的缩放像素),in(英寸)和mm(毫米)。

示例代码

 <AutoCompleteTextView
    android:id="@+id/autoCompleteTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:dropDownHeight="100dp"/>

答案 1 :(得分:0)

我通过实现扩展AppCompatAutoCompleteTextView的自定义类来解决问题。

public void showDropDown() {
        Rect displayFrame = new Rect();
        getWindowVisibleDisplayFrame(displayFrame);

        int[] locationOnScreen = new int[2];
        getLocationOnScreen(locationOnScreen);

        int bottom = locationOnScreen[1] + getHeight();
        int availableHeightBelow = displayFrame.bottom - bottom;
        Resources r = getResources();
        int bottomHeight = Math.round(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 60, r.getDisplayMetrics()));
        int downHeight = availableHeightBelow - bottomHeight;
        setDropDownHeight(downHeight);

        super.showDropDown();
    }