AutocompleteTextView suggestion list goes up

后端 未结 7 1708
小鲜肉
小鲜肉 2020-12-15 05:18

possible duplicates Android : autocompletetextview, suggestion list displays above the textview?

I am fully trying to display suggestion list overlapping on keyboar

相关标签:
7条回答
  • 2020-12-15 05:57

    Here's my solution

    private final static int DELAY_MS = 500;
    autoCompletionTextView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                autoCompletionTextView.requestFocus();
                new Handler().postDelayed(() -> autoCompletionTextView.showDropDown(), DELAY_MS);
                return false;
            }
        });
    

    After keyboard shows up suggestion list is listed above yout AutoCompletionTextView.

    0 讨论(0)
  • 2020-12-15 06:03

    I've had this problem before. For me, there was more screen space above the AutocompleteTextView than below (testing on a "normal" device), so the list opened upwards. I adjusted my layout slightly so that there was more space below the AutocompleteTextView and it started opening downwards. That's what fixed it for me.

    0 讨论(0)
  • 2020-12-15 06:07

    Set Full Layout containing Autocompletetextview inside Scrollview

    This will solve your problem!

    0 讨论(0)
  • 2020-12-15 06:08

    Just adding the android:dropDownHeight="100dp" to the AutoCompleteTextView tag in your layout file will be the best solution I guess! it will simply control the height of drop down hight and allow us to scroll!

    <AutoCompleteTextView
            android:id="@+id/acetxt_assignclient"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"   
            android:dropDownHeight="100dp">
    </AutoCompleteTextView>
    
    0 讨论(0)
  • 2020-12-15 06:14

    The trick is to ensure that the desired drop-down height is never larger than the available space below. My approach is to create a subclass that overrides showDropDown:

    public class DownOnlyAutoCompleteTextView extends AppCompatAutoCompleteTextView {
    
        private final static int MINIMAL_HEIGHT = 50;
    
        public DownOnlyAutoCompleteTextView(Context context) {
            super(context);
        }
    
        public DownOnlyAutoCompleteTextView(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public DownOnlyAutoCompleteTextView(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        @Override
        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;
            if (availableHeightBelow >= MINIMAL_HEIGHT) {
                setDropDownHeight(availableHeightBelow);
            }
    
            super.showDropDown();
        }
    }
    

    Then use this in your layout, e.g.:

    <your.package.DownOnlyAutoCompleteTextView
        android:id="@+id/auto_complete_text_view"
        android:layout_margin="12dp"
        android:hint="AutoComplete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        tools:ignore="HardcodedText" />
    

    Adjust MINIMAL_HEIGHT to fit your requirements -- if there's no or very little space below, it's probably better not to force the issue.

    0 讨论(0)
  • 2020-12-15 06:18

    You can either adjust the layout so that there is more space below the AutoCompleteTextView

    or

    you can change the dropdown height android:dropDownHeight and set some high value, this would work when its inside a scrollView and the AutoCompleteTextView is near the top.

    To display the list of options on focus do something like this

    autoCompleteTextView.setOnFocusChangeListener(new OnFocusChangeListener() {
        public void onFocusChange(View v, boolean hasFocus) {
            if(hasFocus) {
                autoCompleteTextView.showDropDown();
            }
        }
    });
    

    This would display a list of options when the user focuses on the AutoCompleteTextView

    0 讨论(0)
提交回复
热议问题