2015-04-02 104 views
0

我已經在Android中實現了以下對話框,但有一些問題,我不知道爲什麼它發生。在Android的外觀問題中的自定義AlertDialogs /對話框

AlertDialog

  1. 我無法弄清楚爲什麼會出現在頂部和底部拐角的空白。以及如何刪除它!
  2. 正如我已經使用Dialog和不AlertDialog,當我別處觸摸屏幕上的此信息消失。我想阻止這種情況的發生,並希望消息框僅在用戶選擇這兩個選項中的任何一個時纔會關閉。
  3. 我試過多少次,我無法獲得相同寬度的取消和刪除按鈕。

這裏有個XML

custom_alert.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:background="@drawable/custom_alert_layout" 
android:id="@+id/alert_layout" 
android:paddingBottom="15dp" 
android:paddingTop="10dp" 
android:layout_height="wrap_content"> 
<ImageView 
android:layout_width="40dp" 
android:layout_height="40dp" 
android:id="@+id/alert_icon_imageview" 
android:src="@drawable/alerticon" 
android:layout_alignParentTop="true" 
android:layout_alignLeft="@+id/alert_msg" 
android:layout_alignStart="@+id/alert_msg" /> 
<TextView 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:id="@+id/alert_title" 
android:text="TITLE" 
android:textSize="18sp" 
android:textStyle="bold" 
android:textColor="#0a4d4a" 
android:layout_alignParentTop="true" 
android:layout_toRightOf="@+id/alert_icon_imageview" 
android:layout_toEndOf="@+id/alert_icon_imageview" 
android:layout_marginLeft="20dp" /> 
<ImageView 
android:layout_width="match_parent" 
android:layout_height="2dp" 
android:layout_marginTop="10dp" 
android:layout_marginRight="4dp" 
android:layout_marginLeft="2dp" 
android:id="@+id/alert_divider_imageview" 
android:layout_below="@+id/alert_title" 
android:src="@drawable/alertdivider"/> 
<TextView 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:id="@+id/alert_msg" 
android:text="MESSAGE" 
android:layout_marginTop="10dp" 
android:layout_marginLeft="10dp" 
android:textSize="16sp" 
android:layout_below="@+id/alert_divider_imageview" 
android:textColor="#ff373334"/> 
<ImageView 
android:layout_width="match_parent" 
android:layout_height="2dp" 
android:layout_marginRight="4dp" 
android:layout_marginLeft="2dp" 
android:layout_marginTop="10dp" 
android:id="@+id/alert_divider_imageview2" 
android:layout_below="@+id/alert_msg" 
android:src="@drawable/alertdivider"/> 
<Button 
android:layout_width="150dp" 
android:id="@+id/alert_cancel" 
android:layout_marginLeft="10dp" 
android:layout_marginRight="5dp" 
android:layout_marginTop="15dp" 
android:textColor="#ffffff" 
android:textStyle="bold" 
android:text="CANCEL" 
android:background="@drawable/custom_alert_cancel" 
android:layout_height="wrap_content" 
android:layout_below="@+id/alert_divider_imageview2" 
    /> 
<Button 
android:layout_width="150dp" 
android:id="@+id/alert_ok" 
android:text="ERASE" 
android:textStyle="bold" 
android:layout_marginRight="10dp" 
android:layout_marginLeft="5dp" 
android:layout_marginTop="15dp" 
android:textColor="#ffffff" 
android:background="@drawable/custom_alert_ok" 
android:layout_toRightOf="@+id/alert_cancel" 
android:layout_height="wrap_content" 
android:layout_below="@+id/alert_divider_imageview2" /> 
</RelativeLayout> 

custom_alert_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="false" > 
    <shape android:shape="rectangle"> 
     <corners android:radius="10dp"/> 
     <solid android:color="#139977" /> 
     <stroke android:width="2dp" android:color="#0a4d4a" /> 
    </shape> 
</item> 
</selector> 
+0

刪除'機器人:paddingTop = 「10dp」'從根佈局 – 2015-04-02 05:49:44

+1

發佈顯示的對話框代碼。你是如何膨脹的。 – 2015-04-02 05:49:50

+2

您需要刪除標題欄並將透明背景設置爲對話框。閱讀http://stackoverflow.com/questions/13495161/android-custom-design-dialog-prob-without-title-bar – 2015-04-02 05:53:57

回答

0

解決第三問題,從XML刪除按鈕,並使用對話的inbuild按鈕。方法如類的setPositiveButton()setNegativeButton()。 它會給你相同的大小按鈕。

0

解決您可以在XML中使用像

<item name="android:background">@android:color/transparent</item> 

或Java中的第一個問題

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
+0

爲什麼2回答同一問題? – 2015-04-02 05:58:12

+0

我意外地做到了.............. – Moinkhan 2015-04-02 06:04:54

0

線只需添加到您的對話框,刪除對話框中你動作條和標題欄:

Dialog dialog = new Dialog(MainActivity.this); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //add this line 
     dialog.setContentView(R.layout.activity_main); 
1

你能發佈你的Activity的代碼嗎?這裏

final Dialog dialog = new Dialog(getActivity()); 
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    dialog.setContentView(R.layout.alert_dialog); 

    Button okBtn = (Button) dialog.findViewById(R.id.ok_btn); 
    Button cancelBtn = (Button) dialog.findViewById(R.id.cancel_btn); 

    okBtn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      doErase(); 
     } 
    }); 
    cancelBtn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      dialog.dismiss(); 

     } 
    }); 

    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
    dialog.setCancelable(false); 
    dialog.show(); 
0

用於解決您的第一個問題之前setContentView

Window window = actDialog.getWindow(); 
    WindowManager.LayoutParams wlp = window.getAttributes(); 

    window.setAttributes(wlp); 
    window.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 

    actDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 

添加此代碼你的第二個問題的解決方案

actDialog.setCanceledOnTouchOutside(false); 

你的第三個問題的解決方案:

在活動試試這個

地方你的兩個ButtonLinearLayout,給layout_weight相同

0

1。爲了以最快刪除空白: 這兩行添加到您的對話框,

 dialog.getWindow(); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     dialog.setContentView(R.layout.alert_dialog); 

在底部刪除空白,在你的代碼只是從你的custom_alert_layout.xml文件中刪除以下行

<corners android:radius="10dp"/> 

2.To解決第二個問題:下面兩行添加到您的代碼,

dialog.setCancelable(false); 
    dialog.setCanceledOnTouchOutside(false); 

3.To得到相同的寬度按鈕使用的LinearLayout作爲父爲這兩個按鈕,並給予同等權重按鈕。

0

爲您3問題 這裏是代碼

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" > 

<Button 
android:layout_width="match_parent" 
android:id="@+id/alert_cancel" 
android:layout_marginLeft="10dp" 
android:layout_weight="1" 
android:layout_marginRight="5dp" 
android:layout_marginTop="15dp" 
android:textColor="#ffffff" 
android:textStyle="bold" 
android:text="CANCEL" 
android:background="@drawable/custom_alert_cancel" 
android:layout_height="wrap_content" 
/> 
<Button 
android:layout_width="match_parent" 
android:id="@+id/alert_ok" 
android:text="ERASE" 
android:textStyle="bold" 
android:layout_weight="1" 
android:layout_marginRight="10dp" 
android:layout_marginLeft="5dp" 
android:layout_marginTop="15dp" 
android:textColor="#ffffff" 
android:background="@drawable/custom_alert_ok" 
android:layout_height="wrap_content" 
/> 
</LinearLayout>