ssummeraw
ssummeraw
采纳率73%
2013-04-07 09:17

当点击 edit text 时,显示 ListView 中最后的 item

已采纳

现在这样做是为了点击 edit text 时,获取 listview 最后一个 item 的焦点:

 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());
        }
    });

代码可以运行也获取最后的 item,问题是软键盘出现会覆盖 listview 中最后3个 items。有什么方法能让软键盘出现后重新调整屏幕,显示最后的 item?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • xiaoyan_12 xiaoyan_12 8年前

    创建自定义的 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());
    }
    }
    

    在xml中添加:

    ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent"
    
    点赞 评论 复制链接分享
  • O_Casper_ne O_Casper_ne 8年前

    我修改 onSizeChanged 方法

    @Override
    protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld) {
        super.onSizeChanged(xNew, yNew, xOld, yOld);
    
        post(new Runnable() {
            public void run() {
                setSelection(getCount());
            }
        });
    }
    
    点赞 评论 复制链接分享

相关推荐