2009-10-08 24 views
1

我想有一个包含3个视图的对话框 1.带有黑色背景的标题 2.某些正文文本白色背景 3.带2个带灰色背景按钮的线条。如何优化Android的此对话框代码?

问题是,我想要白色的身体的背景颜色,但即使我的看法已经将背景颜色设置为白色,似乎有一些边缘在身体的顶部和底部有不同的背景颜色。

 TextView title = new TextView(this); 
    title.setText("This is my title"); 
    title.setBackgroundColor(Color.BLACK); 
    title.setPadding(10, 10, 10,10); 
    title.setGravity(Gravity.CENTER); 
    title.setTextColor(Color.WHITE); 
    title.setTextSize(20); 

    TextView view = new TextView(this); 
    view.setText("Lorem Ipsum blabla bla \n more bla bla aha hhahah blablalblal."); 
    view.setBackgroundColor(Color.WHITE); 

    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setCancelable(false); 
    builder.setCustomTitle(title); 
    builder.setView(view); 
    builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        Bingo.this.finish(); 
       } 
      }) 
      .setNegativeButton("No", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        dialog.cancel(); 
       } 
      }); 
    AlertDialog alert = builder.create(); 
    alert.show(); 
    ((View)view.getParent()).setBackgroundColor(Color.WHITE); // <-- UGLY fix to avoid stupid margins at top and bottom of the body... 

任何想法如何删除代码的最后一行“UGLY修复”?

+0

充气XML只是一个初步问题。任何不使用XML视图的理由? – 2009-10-08 19:42:15

+0

标题是一个自定义视图,因为我不想任何图标,自定义消息视图是因为我想要在文本中的URL,所以我需要设置view.setAutoLinkMask(Linkify.ALL)来做到这一点,因为它不被构建者支持。无论如何,这setAutoLinkMask没有工作,因为我假设的一些原因,所以我不得不使用充气视图View.inflate(R.layout.my_message_view,null)使自动链接工作... Geee ...为什么一切必须如此困难...... – 2009-10-08 20:46:23

回答

5

要解决的背景颜色的问题,我刚才设置

builder.setInverseBackgroundForced(true); 

所以我的完整代码是

View view = View.inflate(this, R.layout.tos_dialog, null); 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setCancelable(false); 
builder.setIcon(R.drawable.icon); 
builder.setTitle("Bla bla title"); 
builder.setView(view); 
builder.setInverseBackgroundForced(true); 
builder.setPositiveButton("I agree", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int id) { 
      dialog.dismiss(); 
     } 
    }); 
builder.setNegativeButton("I don't agree", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
      Bingo.this.finish(); 
     } 
    }); 
AlertDialog alert = builder.create(); 
alert.show(); 

和视图文本与自动连结

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/root" 
android:layout_height="wrap_content" 
android:layout_width="wrap_content" 
android:padding="10px" 
android:textColor="#000" 
android:gravity="left" 
android:textSize="14px" 
android:background="#FFF" 
android:autoLink="all" 
android:textColorLink="#00F" 
android:text="bla bla http://stackoverflow.com is cool, bla bla." 
/>