0

Недавно я обновил приложение, чтобы встретить новые изменения в Android M (api 23), и я заметил, что в диалоге отображаются огромные изменения.Диалоговое расположение отличается от android 6.0

В частности, пространство, зарезервированное для названия, исчезло, а ограничения по ширине и высоте не соблюдаются.

Это происходит для всех диалогов и, в частности, ниже, вы можете увидеть, как диалог выхода из одного и того же вида сборки устанавливается на устройстве api 22 (слева) против api 23 (справа).

dialog difference

Как я могу добиться, чтобы иметь такое же представление на всех устройствах?

Вот пользовательских XML для диалогового

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:weightSum="1"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:padding="16dp"> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:text="text message" 
      android:id="@+id/confirmDialogMessage" 
      android:layout_marginTop="8dp" /> 
    </LinearLayout> 

    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="50dp" 
     android:weightSum="1" 
     android:background="@color/blue_mp" > 

     <ImageButton 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/confirmDialogNo" 
      android:layout_weight="0.5" 
      android:scaleType="fitStart" 
      android:src="@drawable/cancelicon" 
      android:layout_marginLeft="20dp" 
      android:background="@android:color/transparent" /> 

     <ImageButton 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/confirmDialogYes" 
      android:layout_weight="0.5" 
      android:src="@drawable/okicon" 
      android:scaleType="fitEnd" 
      android:layout_marginRight="20dp" 
      android:background="@android:color/transparent" /> 
    </LinearLayout> 
</LinearLayout> 

Диалог показан таким образом:

dialog = new Dialog(v.getContext()); 
dialog.setContentView(R.layout.dialog_confirm_refuse_layout); 
dialog.setTitle(getString(R.string.options_logout)); 
dialog.show(); 

EDIT: Не могли бы вы объяснить мне, почему это изменение рендеринга происходит между апи 22 и API 23?

ответ

3

сделать свой родительский макет относительна.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    <LinearLayout 
      android:id="@+id/text" 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="16dp"> 
     <TextView 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceSmall" 
       android:text="text message" 
       android:id="@+id/confirmDialogMessage" 
       android:layout_marginTop="8dp" /> 
    </LinearLayout> 

    <LinearLayout 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="50dp" 
      android:weightSum="1" 
      android:layout_below="@id/text" 
      android:background="@color/secondary_blue" > 

     <ImageButton 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:id="@+id/invite" 
       android:layout_weight="0.5" 
       android:scaleType="fitStart" 
       android:src="@drawable/y_cross_btn" 
       android:layout_marginLeft="20dp" 
       android:background="@android:color/transparent" /> 

     <ImageButton 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:id="@+id/close" 
       android:layout_weight="0.5" 
       android:src="@drawable/ic_tick_btn" 
       android:scaleType="fitEnd" 
       android:layout_marginRight="20dp" 
       android:background="@android:color/transparent" /> 
    </LinearLayout> 
</RelativeLayout> 
+0

Спасибо, это сработало, но чтобы показать название, я узнал, как это сделать здесь http://stackoverflow.com/a/32711916/5546499 – LucioB

0

Вы можете перейти от линейной компоновки к относительной компоновке при выравнивании кнопок и сменить кнопку изображения на изображение.

Прикрепление пример кода:

<RelativeLayout 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    android:background="@color/pricing_blue" > 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/confirmDialogNo" 
     android:src="@drawable/button_green" 
     android:layout_marginLeft="20dp" 
     android:layout_alignParentLeft="true" 
     android:background="@android:color/transparent" /> 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/confirmDialogYes" 
     android:src="@drawable/button_green" 
     android:layout_marginRight="20dp" 
     android:layout_alignParentRight="true" 
     android:background="@android:color/transparent" /> 
</RelativeLayout> 
Смежные вопросы