0

画像ボタンをクリックすると、ポップアップ通知がポップアップします。どのように私はボタンのデフォルトの外観を使用する代わりに "OK"と "キャンセル"ボタンをカスタマイズする、私は自分のカスタムImageButtonsを "OK"と "キャンセル"として使用したい。ポップアップ通知をカスタマイズするにはどうすればよいですか?

ここに私のコードがポップアップ通知です。

enter image description here

ので、代わりのそこに赤色で「OK」と「キャンセル」で、私は "を入れたい:

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(); 

       } 
      }); 
} 
} 

は、ここでは上記のコードで通知をポップアップデフォルトです「ok」と「cancel」を自分のカスタムイメージボタンとして使用し、色を赤から別のものに変更したいと考えています。ポップアップ通知の中でこれを行うにはどうすればいいですか?

答えて

0

DialogFragmentを拡張し、View.OnClickListenerを実装するクラスを作成する必要があり、2つの独自のレイアウトを作成する必要がある場合は、すべてのカスタマイズ、ダイアログの外観、独自のボタン、TextViewsの追加などが必要です。そのためのカスタムメイドのボタン。 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; 
     } 
    } 
} 

そして、あなたの活動からあなたは:で入力した通り、彼らにIDと設定OnClickListeners

を与える

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

documentation saysとして、カスタムレイアウトセッションの作成に、カスタムレイアウトを作成し、ダイアログでそれを膨張させることができます。

AlertDialog.Builderで作成したボタン以外のボタンを使用するには、そのボタンのリスナーを処理する必要があります。

これは私が解決策をテストするために作成したレイアウトです:

<?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> 

そして、それは実行させるためのコード:

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(); 

これは、それが中にどのように見えるかのスクリーンショットです私の電話。ニーズに合わせてレイアウトを自由に変更できます。

Example of Dialog

非常によくthis answers for other questionでそれを説明するビクラムのおかげで、私はあなたの質問のために特定のコードが良いだろうと思いました。

関連する問題