我在Listview项目布局中有两个EditText字段。单击按钮时,新项目将添加为Listview中的第一行。我可以在两个字段中输入文本。
这是我的代码:
<ListView
android:id="@+id/items_listView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animationCache="false"
android:background="@color/white"
android:descendantFocusability="afterDescendants"
android:fadingEdge="none"
android:fadingEdgeLength="0dp"
android:focusable="true"
android:divider="@android:color/transparent"
android:overScrollMode="never"
android:scrollingCache="false"
android:smoothScrollbar="true" />
适配器的getView():
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
final ViewHolder viewHolder;
if (convertView == null || !(convertView.getTag() instanceof ViewHolder)) {
viewHolder = new ViewHolder();
convertView = inflater.inflate(R.layout.items_listview_item, null);
viewHolder.quantity = (EditText) convertView.findViewById(R.id.quantity_editText);
viewHolder.description = (EditText) convertView.findViewById(R.id.description_editText);
viewHolder.description.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.position = position;
viewHolder.description.setText(itemsArrayList.get(position).getDescription());
viewHolder.quantity.setText(itemsArrayList.get(position).getQuantity());
viewHolder.quantity.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
itemsArrayList.get(viewHolder.position).setQuantity(arg0.toString());
}
});
viewHolder.description.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void afterTextChanged(Editable arg0) {
itemsArrayList.get(viewHolder.position).setDescription(arg0.toString());
}
});
return convertView;
}
private static class ViewHolder {
EditText description;
EditText quantity;
int position;
}
我正在使用adjustPan进行清单中的活动。
这是我的问题:这在我测试过的所有设备上运行正常,但在三星Galaxy-Tab2(10英寸平板电脑)上,当我添加新项目并点击第二个EditText(即描述字段)键盘时显示在说明字段的正下方,这很好。现在如果我按任意键,键盘就会覆盖描述字段。我看不出究竟是什么进入了这个领域。第二个EditText被键盘完全隐藏。第一个EditText字段不会发生这种情况。我哪里错了?为什么它在galaxy-Tab2上没有按预期工作?请帮我。提前致谢。
答案 0 :(得分:0)
将此行添加到您的Manifest:
android:windowSoftInputMode="adjustPan|adjustResize"
或者您可以将此行添加到您的oncreate:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
答案 1 :(得分:0)
试试这个,
android:windowSoftInputMode="adjustResize".
如果这还不够,您可能需要添加该属性
android:fitsSystemWindows="true"
到包含EditText的根布局。
OR
根据这个改变你的布局,不要错过
这一行机器人:isScrollContainer = “真”
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:isScrollContainer="true"
android:orientation="vertical">
<TableLayout
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:background="#000000"
android:padding="0dp"
android:stretchColumns="*">
...
</TableLayout>
</ScrollView>