用户长按时更改android上的任何按钮

时间:2019-06-28 04:23:06

标签: java android button

我有一些按钮,例如btnA1,btnA2,btnA3,我希望用户可以在长按时更改按钮文本。当用户长按任意按钮时,会弹出对话框以供用户填充按钮文本和一些textView。这是我的代码:

com.android.support:design

这是dialogForm函数:

btnA1.setOnLongClickListener(new Button.OnLongClickListener() {
  @Override
  public boolean onLongClick(View v) {
    dialogForm();
    return true;
  }
});

我如何才能检测到按下了哪个按钮,所以在对话框dismiss()之前,只有那个按钮会改变;

2 个答案:

答案 0 :(得分:0)

尝试给按钮赋予id,这样,当用户选择一个按钮并键入文本时,便可以在对话框中将该文本设置为该特定按钮,然后将其关闭。然后在设置按钮文本中

dialog.setPositiveButton("Submit", new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {

    macroName    = txtMacroName.getText().toString();
    macroStatus    = txtMacroStatus.getText().toString();

    dialog.dismiss();
  }
});

在setPositivebutton方法中,只需获取edittext的值(即getText()。toString),然后将其设置为btn.setText(edittext的值)之类的按钮。

答案 1 :(得分:0)

根据Sibin Davis先生和Karan Sandhu先生的结合,这是最终代码

btnA1.setOnLongClickListener(new Button.OnLongClickListener() {
  @Override
  public boolean onLongClick(View v) {
    Toast.makeText(getApplicationContext(),ttlA1,Toast.LENGTH_SHORT).show();
    dialogForm(btnA1); // <---- add this
    return true;
  }
});

和函数dialogForm():

private void dialogForm(final Button b1){ //<-- add this
dialog = new AlertDialog.Builder(MainActivity.this);
inflater = getLayoutInflater();
dialogView = inflater.inflate(R.layout.macro_form, null);
dialog.setView(dialogView);
dialog.setCancelable(true);
dialog.setIcon(R.mipmap.ic_launcher);
dialog.setTitle("Macro Form");

txtMacroName    = (EditText) dialogView.findViewById(R.id.txtMacroName);
txtMacroStatus    = (EditText) dialogView.findViewById(R.id.txtMacroValue);

dialog.setPositiveButton("Submit", new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
    macroName    = txtMacroName.getText().toString();
    macroStatus    = txtMacroStatus.getText().toString();
    b1.setText(macroName); // <---- add this
    dialog.dismiss();
  }

});

dialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
    dialog.dismiss();
  }
});
dialog.show();
}

谢谢