我正在制作一个简单的待办事项列表应用程序,以学习如何开发Android应用程序。
首先,我有一个EditText,一个普通的Button和一个ListView。一切都很好,我可以添加和删除任务。比我想用ImageButton替换Button。我做了同样的约束。现在,当我触摸EditText时,我的ListView就跳起来并跳出屏幕,但是它的一部分仍在覆盖我的ImageButton的屏幕上,所以我不能再使用它了。但是,如果我按下软键盘上的“确定”,则ListView将回跳,然后我可以再次使用ImageButton添加任务。我在做什么错了?
activity-main.xml:
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/editText"
android:layout_width="255dp"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:ems="10"
android:hint="@string/editTextHint"
android:inputType="textPersonName"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/addButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:contentDescription="@string/addTaskButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toEndOf="@+id/editText"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@android:drawable/ic_input_add" />
<ListView
android:id="@+id/listView"
android:layout_width="365dp"
android:layout_height="428dp"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText" />
MainActivity.java:
ListView lv;
ArrayList<Task> taskList;
TaskArrayAdapter taskAdapter;
EditText editText;
ImageButton btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = findViewById(R.id.listView);
editText = findViewById(R.id.editText);
btn = findViewById(R.id.addButton);
taskList = new ArrayList<>();
handleButton();
taskAdapter = new TaskArrayAdapter(taskList, this);
}
public void handleButton() {
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
editText.onEditorAction(EditorInfo.IME_ACTION_DONE);
taskList.add(new Task(editText.getText().toString()));
lv.setAdapter(taskAdapter);
taskAdapter.notifyDataSetChanged();
editText.setText(null);
}
});
}
@Override
public void onCheckedChanged(CompoundButton checkedTask, boolean isChecked) {
int position = lv.getPositionForView(checkedTask);
Task t = taskList.get(position);
t.setSelected(isChecked);
taskList.remove(t);
lv.setAdapter(taskAdapter);
taskAdapter.notifyDataSetChanged();
}
}
是的,我是编码的新手,所以如果我犯了其他一些错误,请告诉我。谢谢:)
答案 0 :(得分:0)
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/et_task"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toStartOf="@+id/btn_add"
android:hint="Enter task"
/>
<Button
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
<ListView
android:layout_width="match_parent"
android:layout_height="100dp"
app:layout_constraintTop_toBottomOf="@+id/et_task"
app:layout_constraintEnd_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
/>
</android.support.constraint.ConstraintLayout>