0

Wenn Sie auf die Bildschaltfläche klicken, wird eine Popup-Benachrichtigung angezeigt. Wie kann ich die Schaltflächen "OK" und "Abbrechen" anpassen, anstatt die Standardansicht der Schaltflächen zu verwenden? Ich möchte meine eigenen benutzerdefinierten Bildschaltflächen als "OK" und "Abbrechen" verwenden.Wie können Popup-Benachrichtigungen angepasst werden?

Hier ist mein Code für die Popup-Benachrichtigung.

public class Notifications extends AppCompatActivity { 


ImageButton Notifications; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_notifications); 


    Notifications = (ImageButton) findViewById(R.id.AllowNotifications); 


Notifications.setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v) { 

     AlertDialog.Builder builder = new AlertDialog.Builder(Notifications.this); 

     builder.setCancelable(false); //False= ONLY way to exist notification is by clicking NO 
     //True= Exit notification by clicking anywhere on screen outside of notification box. 

     builder.setTitle("Here is the alert dialog"); 
     builder.setMessage("Here is my message thing"); 

     builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int WhichButton) { 
       dialog.cancel(); 
      } 
     }); 


     builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 

      } 
     }); 

     builder.show(); 

       } 
      }); 
} 
} 

Hier ist die Standard-Benachrichtigung mit den obigen Code Pop-up:

enter image description here

Anstatt also dort ein „ok“ und „Abbrechen“ in roter Farbe zu sein, ich möchte, dass die "setzen ok "und" Abbrechen "als meine eigenen benutzerdefinierten Bildschaltflächen und ich möchte die Farbe von Rot zu etwas anderem ändern. Wie gehe ich in der Popup-Benachrichtigung vor?

Antwort

0

Wenn Sie alles anpassen möchten, das Aussehen des Dialogs, fügen Sie Ihre eigenen Schaltflächen, TextViews etc. - Sie müssen eine Klasse, die DialogFragment erweitert und View.OnClickListener implementiert und Sie müssen Ihr eigenes Layout mit zwei erstellen benutzerdefinierte Tasten dafür. Geben Sie ihnen ids und setzen OnClickListeners

Wie eingegeben: https://developer.android.com/reference/android/app/DialogFragment.html

public static class MyDialogFragment extends DialogFragment implements View.OnClickListener { 
    static MyDialogFragment newInstance() { 
     return new MyDialogFragment(); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.dialog_fragment, container, false); 
     v.findViewById(R.id.btn_ok).setOnClickListener(this); 
     return v; 
    } 

    @Override 
    public void onClick(View view) { 
     switch (view.getId()) { 
      case R.id.btn_ok: 
       // do something 
       break; 
      default: 
       break; 
     } 
    } 
} 

Und von Ihrer Aktivität Sie tun:

void showDialog() { 
    // Create the fragment and show it as a dialog. 
    DialogFragment newFragment = MyDialogFragment.newInstance(); 
    newFragment.show(getFragmentManager(), "dialog"); 
} 
0

Als documentation says im Erstellen einer benutzerdefinierten Layout- Sitzung, Sie können ein benutzerdefiniertes Layout erstellen und es in Ihrem Dialog aufblasen.

Um eine andere Schaltfläche als die von der AlertDialog.Builder erstellte zu verwenden, müssen Sie den Klick-Listener von ihnen behandeln.

Dies ist das Layout ich die Lösung zu testen erstellt:

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

    <TextView 
     android:id="@+id/dialogTitle" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Here is the alert dialog" 
     android:textColor="@android:color/black" 
     android:textSize="16sp" 
     android:textStyle="bold"/> 

    <TextView 
     android:id="@+id/dialogSubtitle" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Here is my message thing"/> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="32dp"> 

     <Button 
      android:id="@+id/positiveButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentEnd="true" 
      android:background="@android:color/transparent" 
      android:text="OK" 
      android:textColor="@android:color/holo_red_light"/> 

     <Button 
      android:id="@+id/negativeButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginEnd="40dp" 
      android:layout_toStartOf="@id/positiveButton" 
      android:background="@android:color/transparent" 
      android:text="Cancel" 
      android:textColor="@android:color/holo_red_light"/> 

    </RelativeLayout> 

</LinearLayout> 

Und den Code, um es laufen zu lassen:

LayoutInflater layoutInflater = LayoutInflater.from(this); 
     View promptView = layoutInflater.inflate(R.layout.test, null); 

     final AlertDialog alertD = new AlertDialog.Builder(this).create(); 

     TextView title = (TextView) promptView.findViewById(R.id.dialogTitle); 
     TextView subtitle = (TextView) promptView.findViewById(R.id.dialogSubtitle); 

     title.setText("My new Custom Dialog"); 
     subtitle.setText("With everything that I want"); 

     Button positive = (Button) promptView.findViewById(R.id.positiveButton); 
     Button negativeButton = (Button) promptView.findViewById(R.id.negativeButton); 

     positive.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // btnAdd1 has been clicked 
      } 
     }); 

     negativeButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // btnAdd2 has been clicked 
      } 
     }); 

     alertD.setView(promptView); 
     alertD.show(); 

Dies ist ein Screenshot von, wie es aussieht in mein Telefon. Fühlen Sie sich frei, das Layout so zu ändern, wie es Ihren Bedürfnissen besser entspricht.

Example of Dialog

Dank Vikram, dass es sehr gut in this answers for other question erklärt, aber ich dachte, dass ein bestimmte Code für Ihre Frage besser wäre.

Verwandte Themen