2016-07-11 14 views
0

Ich möchte den App-Nutzern erlauben, den Button-Text in Android zu ändern. Wenn der Benutzer auf "Button" klickt, sollte er etwas tun, aber wenn er/sie den Button langklickt, sollte ein Edittext Pop-up erscheinen & was auch immer Benutzer eingeben, sollte als Button Text gespeichert werden. Bisher habe ich folgendes erledigt.Erlaube dem Benutzer, Button-Text bei langem Klicken in Android zu bearbeiten

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; 
    } 
} 
+0

Google es werden Sie Ihre Antwort finden, versuchen Sie es zuerst zu erforschen, bevor Sie Ihre Frage veröffentlichen. Sie werden mehrere Beiträge finden, die Ihre Frage beantworten. – chandil03

+0

Welches Problem haben Sie? –

Antwort

0

versuchen wie folgt aus:

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:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="wrap_content"> 

<EditText 
android:id="@+id/edit_dialog" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" /> 
</LinearLayout> 

enter image description here

und dann

enter image description here

+0

Hallo Cgx. Versuchte deine Lösung aber auf Longclick passiert nichts –

+0

was! Ich habe Test Agin, aber funktioniert gut – Cgx

+0

Ja. Vielen Dank. Es funktioniert!!! –

0

können Sie create a input dialog einen Text von Benutzer wie unten

btn1.setOnLongClickListener(new View.OnLongClickListener() { 
      @Override 
      public boolean onLongClick(View v) { 

       builder.show(); 
       return true; 
      } 
     }); 
    } 

und stellen Sie den Text von btn1 zu bekommen:

builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     btn1.setText(input.getText().toString()); 
    } 
});