2016-04-22 146 views
1

在材質設計documentation中,它表示對話框文本的內容填充應爲24dp,但如果使用以下代碼構造簡單的AlerDialog,則不會顯示任何底部填充,如在屏幕截圖中所示。AlertDialog不正確使用材料設計?

AlertDialog

public class MainActivity extends android.support.v7.app.AppCompatActivity { 

     @Override 
     public void onCreate(final Bundle savedInstanceState) { 

     final android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(this); 
     builder.setTitle("title"); 
     builder.setMessage("asdf asöldkfasölkdf öasdklfjöa aösdkföa sdköf masjdö lmasjködf mjaösk maöskd mjaösk fmaöskmaöskmföasföalk maölskjd möaslkd möas mjaös m").setCancelable(true) 
      .setNeutralButton(R.string.ok, new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(final DialogInterface dialog, final int id) { 
         dialog.cancel(); 
        } 
       }).setOnCancelListener(new OnCancelListener() { 
       @Override 
       public void onCancel(final DialogInterface dialog) { 
        MainActivity.sMessageDialogId = 0; 
       } 
     }); 
     builder.show(); 
    } 
    } 
+0

使用android.support.v7.app.AlertDialog而不是機器人.app.AlertDialog。檢查http://stackoverflow.com/questions/26455919/material-design-not-styling-alert-dialogs/29810469#29810469 –

+0

它已經是支持版本 – David

+0

如此荒謬的是,如此多的框架本身並不遵循材料準則。您是否曾經找到過解決方案,而無需在對話框構建器上設置自定義視圖?許多其他填充尺寸也不符合指南。 –

回答

0

試試這個builder.setPadding(24, 24, 24, 24);

+0

我知道這可以工作,但爲什麼不是已經實施的標準呢? – David

+0

'builder.setPadding'指的是什麼API?我在'AlertDialog.Builder'文檔中沒有看到。 –

1

請使用下面的代碼檢查版本兼容性,

AlertDialog.Builder builder; 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
     builder = new android.app.AlertDialog.Builder(getActivity(),android.R.style.Theme_Material_Light_Dialog_Alert); 
} else { 
     builder = new android.app.AlertDialog.Builder(getActivity()); 
} 
+0

您應該使用android.support.v7.app.AlertDialog。 –

+0

我打電話給android.support.v7.app.AppCompatActivity中的代碼;對於這個活動只能使用Theme.AppCompat.xy – David