我想允许App用户在Android中更改Button文本。 当用户单击按钮时,它应该执行某些操作,但是当他/她长按按钮时,将弹出一个编辑文本,并且无论用户键入什么内容都应另存为按钮文本。
到目前为止,我已经完成了以下操作。
btn1 = (Button) findViewById(R.id.button1);
etLabel = (EditText) findViewById(R.id.etName);
btn1.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// How to pop-up edittext from here
// to allow user change Button name
btn1.setText(name);
return true;
}
});
}
public void onButtonClick(View view) {
switch (view.getId()) {
case R.id.button1:
// do something else here
break;
}
}
在google上您会找到答案,请在发布问题之前先进行研究。 您会发现一些帖子回答您的问题。
您面临什么问题?
尝试这样:
public class SOdemoAcitvity extends AppCompatActivity {
private Button btn;
private EditText edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.so_demo);
btn = (Button) findViewById(R.id.btn_demo);
edit = (EditText) findViewById(R.id.edit_text);
btn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
showDialog(edit.getText().toString());
return true;
}
});
}
private void showDialog(String str) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("input text");
View view = LayoutInflater.from(this).inflate(R.layout.dialog_view, null);
final EditText edit_dialog = (EditText) view.findViewById(R.id.edit_dialog);
edit_dialog.setText(str);
builder.setView(view);
builder.setNegativeButton("cancel",null);
builder.setPositiveButton("confirm", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
btn.setText(edit_dialog.getText().toString());
}
});
builder.show();
}
}
dialog_view xml:
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">
android:id="@+id/edit_dialog"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
然后
嗨,Cgx。 尝试了您的解决方案,但在longClick上没有任何反应
什么! 我有测试前期但工作正常
如果解决了,请回答,谢谢!,:)
还有一件事。 当我保存文本时,它是一个临时更改。 我想永久保存它,直到通过LongClick再次更改它为止。 如何做到这一点?
您可以创建一个输入对话框以从用户获取文本
btn1.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
builder.show();
return true;
}
});
}
并设置btn1的文本,如下所示:
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
btn1.setText(input.getText().toString());
}
});