2016-07-18 3 views
0

Я работаю над настраиваемым диалоговым окном для своего приложения. Однако у меня есть некоторые проблемы с дизайном. Я хочу создать следующее:Android Custom Dialog Design

Here is the screenshot of the dialog

Я почти все сделано, только одна часть отсутствует. Граница, которую я выделил здесь в черном (которая находится в реальном приложении белого цвета, цвет фона диалога) должна быть прозрачной, но только эта черная часть.

Вот код XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="fill_parent" 
    android:layout_height="335dp" 
    android:orientation="vertical" > 

    <RelativeLayout 
     android:layout_width="75dp" 
     android:layout_height="75dp" 
     android:layout_gravity="center_horizontal" 
     android:adjustViewBounds="false" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:background="@drawable/dialog_circle" 
     android:id="@+id/relativeLayout2" 
     android:translationZ="1dp" 
     android:layout_marginBottom="-35dp"> 
     <ImageView 
      android:layout_width="70dp" 
      android:layout_height="70dp" 
      android:src="@drawable/icon_big" 
      android:id="@+id/imageView5" 
      android:layout_gravity="center_horizontal" 
      android:adjustViewBounds="false" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      /> 

    </RelativeLayout> 

    <LinearLayout 
     android:id="@+id/listLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="300dp" 
     android:background="@drawable/custom_dialog_background" 
     android:orientation="vertical" 
     android:layout_below="@+id/relativeLayout2"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="80dp" 
     android:background="#2e7b8a" 
     android:id="@+id/relativeLayout"> 


     <ImageView 
      android:layout_width="40dp" 
      android:layout_height="40dp" 
      android:src="@drawable/close2" 
      android:id="@+id/imgClose" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentEnd="true" 
      /> 



     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Title" 
      android:textColor="#000000" 
      android:textStyle="italic|bold" 
      android:textSize="30sp" 
      android:id="@+id/textView9" 
      android:layout_below="@+id/imgClose" 
      android:layout_centerHorizontal="true" /> 
    </RelativeLayout> 



    </LinearLayout> 
</RelativeLayout> 
+0

доля вашего XML здесь –

+1

нужно просто положить кнопку плавающему и поместить изображение внутри еще и может принять макет –

+0

кадра Изображения на месте, но вместо прозрачной границы (Осроено черный цвет) есть белый фон диалога – Chris

ответ

1

Внутри вашего диалогового класса:

Window window = this.getWindow(); 
    window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    window.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 

Это удаляет заголовок и наиболее вероятную границу. Если вы используете DialogFragment, вы также можете определить стиль следующим образом:

int style, theme; 

    style = DialogFragment.STYLE_NO_FRAME; 
    theme = android.R.style.Theme_Holo_Dialog; 


    setStyle(style, theme); 
+0

Можно ли его решить с помощью простого XML? – Chris

+0

фактически, возможно. измените корневой элемент на framelayout и установите полный фон, где есть проблема, прозрачность. Он должен быть FrameLayout, потому что он позволяет вам перекрывать несколько элементов. После того как вы вставили, переместите xml-код фона как можно дальше в xml-код (так что он находится в задней части) – Zoe

+0

Спасибо за помощь. Я решил это сейчас с помощью Framelayout и одной дополнительной строки кода: dialog.getWindow(). SetBackgroundDrawable (новый ColorDrawable (android.graphics.Color.TRANSPARENT)); – Chris

0

попробуйте вот так.

<style name="MY.DIALOG" parent="Theme.AppCompat.Light.Dialog"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowBackground">@android:color/black</item> 


</style> 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setStyle(DialogFragment.STYLE_NORMAL, R.style.MY_DIALOG); 

}