如何在多行AutoCompleteTextView上定位下拉列表?

时间:2016-12-05 18:13:32

标签: android autocompletetextview

我正在尝试自定义AutoCompleteTextView的行为,但我遇到了一些困难。我的AutoCompleteTextView子类是一个多行编辑文本,我希望能够垂直定位下拉列表(实际上是ListPopupWindow),以便跟随用户的光标。

我认为如果我可以计算锚点视图顶部和当前行位置之间的差异,我可以相应地设置偏移量,但是我必须在此过程中做错事,因为下拉列表不会发生我想去的地方。有人能指出我在这段代码中做错了什么吗?

    @Override
public void showDropDown() {

    // Get the screen position of the cursor and set the vertical offset accordingly.
    int[] screenPoint = new int[2];
    getLocationOnScreen(screenPoint);

    final Rect displayFrame = new Rect();
    getWindowVisibleDisplayFrame(displayFrame);

    int pos = getSelectionStart();
    Layout layout = getLayout();
    int line = layout.getLineForOffset(pos);
    int lineTop = layout.getLineTop(Math.max(0,line - 1));
    int lineBottom = layout.getLineBottom(line);

    int availableSpaceAboveField = screenPoint[1] + lineTop - displayFrame.top;
    int availableSpaceBelowField = displayFrame.bottom - screenPoint[1] - lineBottom;

    int verticalOffset = -lineTop;

    setDropDownVerticalOffset(verticalOffset);
    super.showDropDown();
}

0 个答案:

没有答案