我正在创建一个聊天应用程序。在这里,我有一个edittext,一个按钮和一个listview。当输入文本并单击按钮时,该项目被添加到listview.Here,我想创建页面添加新项目时自动向上滚动。视图不应隐藏在键盘后面。如何做?
这是按钮点击的代码...
final EditText et = (EditText)findViewById(R.id.EditText1);
final ImageButton imb=(ImageButton)findViewById(R.id.btn_send);
imb.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
String str = et.getText().toString();
web1.add(str);
Toast.makeText(ShoutSingleProgram.this, "You entered...."+str, Toast.LENGTH_SHORT).show();
adapter1.notifyDataSetChanged();
et.setText("");
}
});
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if(s.toString().trim().length()==0){
imb.setEnabled(false);
} else {
imb.setEnabled(true);
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
}
答案 0 :(得分:3)
选项1.每当添加新测试时调用此方法。
private void scrollMyListViewToBottom() {
listView.post(new Runnable() {
@Override
public void run() {
// Select the last row so it will scroll into view...
listView.setSelection(myListAdapter.getCount() - 1);
}
});
}
选项2。
listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
将列表的头部设置为底部
listView.setStackFromBottom(true);