我遇到了问题。不确定该怎么称呼它,或导致它的原因
我正在学习Android SQLite,并开始训练制作简单的记事应用程序。
问题是我有一个用于类别选择的自定义对话框,在打开对话框之前,EditText字段中的一切都很好,但是在打开并关闭它之后,文本开始覆盖,例如创建相同文本的多个图层,然后文本光标在每个符号后都留下一行。 (请参阅问题的“错误演示” GIF)
还有其他人看到过这样的东西吗?对话框是什么原因造成的?
编辑:
这是单击星号以打开对话框时执行的代码
starred.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(CreateNoteActivity.this);
View mView = getLayoutInflater().inflate(R.layout.dialog_category_select, null);
ListView categoryList = mView.findViewById(R.id.category_list);
Button cancelSelect = mView.findViewById(R.id.cancelSelect);
final CategoryListAdapter adapter = new CategoryListAdapter(CreateNoteActivity.this);
categoryList.setAdapter(adapter);
//get the data and append to a list
Cursor data = myDB.getCategories();
while(data.moveToNext()){
Category thisNote = new Category(data.getInt(0), data.getString(1), data.getString(2));
adapter.add(thisNote);
}
categoryList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, final int i, long l) {
final Category selectedCategory = (Category) adapterView.getItemAtPosition(i);
int duration = Toast.LENGTH_SHORT;
String s = "Category celected: "+selectedCategory.getCategoryName();
Toast toast = Toast.makeText(context, s, duration);
toast.show();
}
});
builder.setView(mView);
final AlertDialog selectCategory = builder.create();
selectCategory.getWindow().setBackgroundDrawable(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
selectCategory.show();
View decorView = getWindow().getDecorView();
decorView.setBackgroundResource(android.R.color.transparent);
int width = (int)(getResources().getDisplayMetrics().widthPixels*0.80);
int height = (int)(getResources().getDisplayMetrics().heightPixels*0.80);
selectCategory.getWindow().setLayout(width, height);
cancelSelect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectCategory.dismiss();
}
});
}
});
答案 0 :(得分:2)
此答案可能会对您有所帮助
在对话框关闭后将其写入
ediText = findViewById(R.id.edit_text);
editText.setSelection(editText.getText().length);
基本上使用上述逻辑,光标不会指向editText
关闭处dialog
的第一个字符
答案 1 :(得分:1)
注意到我试图设置透明背景以两次显示自定义对话框bcg。 所以解决此问题的原因是删除了两行
*View decorView = getWindow().getDecorView();
decorView.setBackgroundResource(android.R.color.transparent);*
不确定为什么会导致此问题。应该检查什么是getDecorView()方法。使用它的原因是找到它作为显示自定义背景的解决方案。
这条线也很好
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
猜猜这是橡皮鸭调试的案例-只需告诉某人有关问题即可解决。感谢大家。
答案 2 :(得分:0)
关闭或关闭对话框时,请尝试使用此代码,
edittext.setSelection(editText.getText().toString().trim().length);