Просмотр за пределами диалоговых окон
Мне нужно что-то вроде этого:
![playstorereview]()
Изображение профиля пользователя "выскакивает" по границам диалогов.
Я пробовал все: возиться с отсечением с любой возможной комбинацией под солнцем, динамически создавая представление после диалога и добавляя его в представление корневого содержимого, используя отдельное представление и загрузку с помощью Dialog.setCustomTitle(), взламывая методы Images onDraw() и применяя всевозможные оценки/позиционные хаки --- но независимо от того, какое изображение всегда получает обрезание и разделение пополам.
Я даже дошел до декомпиляции Play Store APK и посмотрел, как они это сделали. К сожалению, файлы ресурсов не дают многого, и я не могу найти что-либо в Smali.
Может ли кто-нибудь помочь? Пожалуйста...: - (
EDIT. Я просто говорю об изображении профиля пользователя в верхней части диалогового окна, а не о самом диалоге.
Ответы
Ответ 1
диалоговый метод:
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>
результат
![Result picture]()
Ответ 2
Похоже, что они просто имеют округленное изображение внутри 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();
ВЫХОД
![enter image description here]()
Ответ 3
Во-первых, вы должны сделать фон вашего диалога прозрачным.
Для DialogFragment: fooobar.com/questions/495301/....
Для AlertDialog: fooobar.com/questions/94156/....
Во-вторых, объедините свои макеты таким образом, как это:
<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 - изображение заголовка
Ответ 4
Чтобы улучшить @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>
Результат:
![введите описание изображения здесь]()