2016-04-22 58 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