Просмотр вне границ диалоговых окон

Я хочу что-то вроде этого:

playstorereview

Изображение профиля пользователя «выскакивает» по границам диалогов.

Я пробовал все: возиться с отсечением с любой возможной комбинацией под солнцем, динамически создавая представление после диалога и добавляя его в представление корневого содержимого, используя отдельное представление и загрузку, которое с помощью Dialog.setCustomTitle (), взломать Обрабатывает методы onDraw () и применяет всевозможные границы / позиционные хаки — но независимо от того, какое изображение всегда получает обрезание и разделение пополам.

Я даже дошел до декомпиляции Play Store APK и посмотрел, как они это сделали. К сожалению, файлы ресурсов не дают многого, и я ничего не могу найти в Smali.

Может ли кто-нибудь помочь? Пожалуйста… 🙁

EDIT : Я просто говорю о изображении профиля пользователя в верхней части диалогового окна, а не о самом диалоге.

Диалоговый метод:

 Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.mhp); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); dialog.show(); 

mhp.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/transparent" > <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="100dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="57dp" android:background="#f00" android:orientation="vertical" > </LinearLayout> <ImageView android:id="@+id/imageView1" android:layout_width="100dp" android:layout_height="100dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:src="@drawable/ic_launcher" /> </RelativeLayout> 

результат
Введите описание изображения здесь

Похоже, что они просто имеют округленное изображение внутри ImageView и имеют макет с краем сверху, который является половиной изображения,

Итак, если мой образ равен 100px , я должен использовать 50dip для отображения изображения по центру экрана

  dialog.xml 

 <LinearLayout android:layout_width="fill_parent" android:layout_height="200dip" android:layout_marginTop="50dip" android:background="@android:color/holo_green_dark" > </LinearLayout> <ImageView android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:contentDescription="@string/app_name" android:src="@drawable/download" /> 

И тогда у вас просто есть ваш диалог с фоном, прозрачным

 Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.dialog); dialog.setCancelable(false); dialog.getWindow().setBackgroundDrawable( new ColorDrawable(android.graphics.Color.TRANSPARENT)); dialog.show(); 

ВЫВОД

Введите описание изображения здесь

Во-первых, вы должны сделать фон вашего диалога прозрачным. Для DialogFragment: https://stackoverflow.com/a/23729785 . Для AlertDialog: https://stackoverflow.com/a/19175448 . Во-вторых, объедините свои макеты таким образом, как это:

 <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <RelativeLayout android:layout_marginTop="30dp" android:layout_width="match_parent" android:layout_height="50dp" android:background="@android:color/darker_gray"> <TextView android:layout_centerHorizontal="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="blablabla"/> </RelativeLayout> <ImageView android:id="@+id/iv1" android:layout_width="50dp" android:layout_height="50dp" android:layout_centerHorizontal="true" android:src="@drawable/ic_launcher"/> </RelativeLayout> 

Где iv1 – изображение заголовка

Чтобы улучшить ответ @ MHP, вы также можете добавить cardView, чтобы округлить угол вашего диалога.

Что-то вроде:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/transparent"> <LinearLayout android:layout_width="match_parent" android:layout_height="100dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="57dp" android:background="@android:color/transparent" android:orientation="vertical"> <android.support.v7.widget.CardView xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/llMainContents" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FAFAFA" android:orientation="vertical" app:cardCornerRadius="2dp" /> </LinearLayout> <ImageView android:id="@+id/ivIcon" android:layout_width="100dp" android:layout_height="100dp" android:padding="8dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:contentDescription="@null" android:src="@mipmap/ic_launcher" /> </RelativeLayout> 

Результатом будет: Введите описание изображения здесь