2017-09-05 15 views
0

AlertDialog v7 AppCompにはスタイルがある、さまざまな画面サイズで実行されるプロジェクトがあります。私の質問は、AlertDialogメッセージのテキストサイズをスタイルする方法ですか?第二の質問様々な画面サイズのAlertDialogのサイズを変更する方法は?私はCustomDialogを独自のxmlファイルでアクティビティとして作成しました。エミュレータがxmlファイルの実行時にゴーストのようなものを表示する以外は正常に動作しているようです!私はメッセージのテキストサイズを変更できないことを意味する最近の投稿を見てきました。私はDisplayMetricsの使い方についていくつかの知識を持っていますが、むしろこの慣習を使用しません。下のAletDialogとスタイルのデザインコード。誰かが私を確保することができる場合ゴーストイメージは、実際のデバイス上では表示されません私はあきらめ、あなたは(alertdialogための独自のレイアウトをする必要はありませんカスタマイズのあなたのようなもののために不格好AlertDialogスタイリング

private void doWhat() { 
    // R.style.MyAlertDialogStyle see res/values/styles 
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(this, R.style.MyAlertDialogStyle); 

    // Setting Dialog Title 
    alertDialog.setTitle("Confirm Reset of Password"); 

    // Setting Dialog Message 
    alertDialog.setMessage("Click YES to create a new master password"); 

    // Setting Icon to Dialog 
    alertDialog.setIcon(R.drawable.caution); 

    // Setting Positive "Yes" Button 
    alertDialog.setPositiveButton("YES", new DialogInterface.OnClickListener() { 

     public void onClick(DialogInterface dialog, int which) { 
      // Write your code here to invoke YES event 
      db = helper.getReadableDatabase(); 

      String q = "SELECT * FROM masterPW"; 
      Cursor cursor = db.rawQuery(q,null); 
      // Above query gets TABLE_PW data from Col_IDI 
      // TABLE_PW will only ever have one row of data 

      int rowID = 99; 
      if(cursor.moveToFirst()){ 
       rowID = cursor.getInt(cursor.getColumnIndex(Col_IDI)); 
       str = cursor.getString(cursor.getColumnIndex(Col_MPW)); 
      } 
      cursor.close(); 

      // Line of code below WORKS deletes entire TABLE <===== 
      // Not a recomended way to re-set the master password 
      // db.delete(TABLE_PW, null, null); 

      String num = Integer.toString(rowID); 

      db.delete(TABLE_PW, Col_IDI + " = ?", new String[] { num }); 
      db.close(); 

      Intent intentYY = new Intent(DetailsActivity.this, MainActivity.class); 
      startActivity(intentYY); 
     } 
    }); 

    // Setting Negative "NO" Button 
    alertDialog.setNegativeButton("NO", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      // Write your code here to invoke NO event 
      Toast.makeText(getApplicationContext(), "Password NOT Changed", Toast.LENGTH_SHORT).show(); 
      dialog.cancel(); 
     } 
    }); 
    // Showing Alert Message and set the SIZE of the alertDialog 
    alertDialog.show().getWindow().setLayout(1300, 500);// was 1100 500 

} 
    <!--Code below styles the AlertDialog.Builder on DetailsActivity --> 
<style name="MyAlertDialogStyle" parent="Theme.AppCompat.Dialog.Alert"> 
    <!-- Used for the buttons --> 
    <item name="colorAccent">@color/color_deepBlue</item> 
    <!-- Used for the title and text --> 
    <item name="android:textColorPrimary">@color/color_Black</item> 
    <item name="android:textSize">25sp</item> 
    <!-- Used for the background --> 
    <item name="android:background">@color/color_lightGray</item> 
</style> 
+0

を作品ダイアログを改善し、これはあなたのすべてのTextViewのスタイリングへのアクセス、クリックやなどを与えます、そして、あなたのダイアログの表示を設定しますそのレイアウトに。 –

+0

@AalapPatel ActivityCustomなしでのみカスタムxmlファイルを作成し、CustomDialogを使用するアクティビティ内でカスタムxmlを膨張させます –

+0

ActivityCustomなしで何が?? –

答えて

1

@James_Duh私はいくつかの広範なテストの後、私の以前の答えを削除しました。 activity_custom.xmlファイルを膨張させることには多くの問題があります。ですから、より良い考え方はsetContentViewを使うことです。あなたはまだあなたがコードを開発するすべてのデバイスの画面のためactivity_custom.xmlを作成する必要があります

を下回っている他の変数

private Context context = this; 

のようにこれを宣言する次に、ここでactivity_custom.xmlを開いて表示する方法がありますあなたの新しいのファイルと表示し、私はさまざまなデバイス上でテストし、それはあなたの警告ダイアログのカスタムレイアウトを作成する偉大な

public void doWhat(){ 

    final Dialog openDialog = new Dialog(context); 
    openDialog.setContentView(R.layout.activity_custom); 
    Button btnYES = (Button)openDialog.findViewById(R.id.btnYES); 
    // if YES delete Master Password from TABLE_MPW 

    btnYES.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      openDialog.dismiss(); 
      Intent intent = new Intent(DetailsActivity.this, ListActivity.class); 
      startActivity(intent); 

      Toast.makeText(getApplicationContext(), "Password WAS Changed", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    openDialog.show(); 
} 
+0

このコード行で少し混乱しています。なぜopenDialogプレフィックスを使用するのですか?Button btnYES =(Button)findViewById(R.id.btnYES );そしてそれは失敗しましたおそらく誰かがこれで精巧にすることができますが、シンプルでいいです –

0

だ、この方法を使用する場合があります

WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
lp.copyFrom(alertDialog.getWindow().getAttributes()); 
lp.width = 150; 
lp.height = 500; 
lp.x=-170; 
lp.y=100; 
alertDialog.getWindow().setAttributes(lp); 

と、警告ダイアログテーマを変更すると、あなたのstyle.xmlであなたのテーマを定義するには:1デフォルト)と、警告ダイアログのサイズを変更するために、あなたは使うことができ

<resources> 
<style name="AlertDialogTheme" parent="@android:style/Theme.Dialog"> 
    <item name="android:textColor">#00FF00</item> 
    <item name="android:typeface">monospace</item> 
    <item name="android:textSize">10sp</item> 
</style> 
</resources> 

とsダイアログのテーマは次のとおりです:

AlertDialog.Builder builder = new AlertDialog.Builder(new 
ContextThemeWrapper(this, R.style.AlertDialogTheme)); 

希望これはすべてです。

+0

@Krantzしたがって、custom.xmlファイルを作成し、そのダイアログを使用するアクティビティで膨らませますそのアクティビティ私はLayoutParamsを使ってさまざまなデバイスのサイズを設定します "自分のレイアウト"について少しでも –

+0

私のスタイルファイルに 10spを使用しました。私は、アクティビティでカスタムXMLファイルを呼び出す方法を知る必要があると思います。 –