单击编辑文本时,在ListiView中显示最后一项

Mau*_*ice 6 android

目前我这样做是为了在点击编辑文本后获得listview中最后一项的焦点:

    bodyText.setOnFocusChangeListener(new OnFocusChangeListener() {

        public void onFocusChange(View v, boolean hasFocus) {               
            getListView().setSelection(getListView().getCount());
        }
    });

    bodyText.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            getListView().setSelection(getListView().getCount());
        }
    });
Run Code Online (Sandbox Code Playgroud)

它工作得很好并抓住了最后一项,问题是软键盘出现并覆盖列表视图中的最后3项.有没有办法显示软键盘出现后的最后一项并调整屏幕大小?谢谢!

Mau*_*ice 18

我制作了自己的Custom ListView,如下所示:

public class CustomListView extends ListView {

public CustomListView (Context context) {
    super(context);
}

public CustomListView (Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomListView (Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld) {
    super.onSizeChanged(xNew, yNew, xOld, yOld);

    setSelection(getCount());

}
}
Run Code Online (Sandbox Code Playgroud)

您必须包含所有3个构造函数,否则将抛出异常.

然后在你通常放的XML中

列表显示

android:id="@+id/android:list"
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
Run Code Online (Sandbox Code Playgroud)

ListView更改为com.blah.blah.CustomListView.

抱歉凌乱的布局,由于某种原因我无法让格式化程序正常工作.

运行您的应用程序 现在,当您单击EditText时,它会显示软键盘显示后的最后一项!请注意,存在一些限制,例如当您在EditText中键入文本时出现自动完成功能时,由于ListView的大小更改,它也会显示最后一项.

请享用!