2009-10-08 54 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." 
/>