0

Я работаю с настраиваемым диалоговым окном предупреждения в android.Пользовательское диалоговое окно предупреждения android

Я следовал за link 1 и linke 2.

В моем коде, используя эти стили.

<style name="DialogAnimation"> 
    <item name="android:windowEnterAnimation">@anim/slide_up_dialog</item> 
    <item name="android:windowExitAnimation">@anim/slide_out_down</item> 

<!-- Animation for dialog box --> 
<style name="DialogSlideAnim" parent="AppBaseTheme"> 
    <item name="android:windowAnimationStyle">@style/DialogAnimation</item> 
</style> 

Из этих стилей я получаю граничат диалог. Но мне нужно, как показано ниже. Custom alert dialog

Я использую устройство LG Nexus 4. Что мне нужно сделать, чтобы добиться этого?

ответ

4

У меня есть решение. Посмотрите пример ниже.

В стиле XML используйте:

<resources> 
    .... 
    <style name="DialogAnimation"> 
     <item name="android:windowEnterAnimation">@anim/abc_slide_in_bottom</item> 
     <item name="android:windowExitAnimation">@anim/abc_slide_out_bottom</item> 
    </style> 

    <style name="DialogSlideAnim"> 
     <item name="android:windowAnimationStyle">@style/DialogAnimation</item> 
     <item name="android:windowBackground">@android:color/transparent</item> 
     <item name="android:windowFrame">@null</item> 
     <item name="android:windowNoTitle">true</item> 
    </style> 
</resources> 

и диалогового расположение

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

    <Button 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Male" 
      android:id="@+id/male" 
      android:layout_marginBottom="-10dp" 
      android:layout_gravity="center_horizontal"/> 
    <Button 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Female" 
      android:id="@+id/female" 
      android:layout_below="@id/male" 
      android:layout_gravity="center_horizontal"/> 
    <Button 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:text="Cancel" 
      android:layout_below="@id/female" 
      android:id="@+id/cancel" 
      android:layout_gravity="center_horizontal"/> 
</RelativeLayout> 

и диалоговый Java файл:

public class YourDialog extends DialogFragment { 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     return new Dialog(getActivity(), R.style.DialogSlideAnim); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
     final View view = inflater.inflate(R.layout.your_dialog, container, false); 
     return view; 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     final WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
     final Window window = getDialog().getWindow(); 
     window.setGravity(Gravity.BOTTOM); 
     lp.copyFrom(window.getAttributes()); 
     lp.width = WindowManager.LayoutParams.MATCH_PARENT; 
     lp.height = WindowManager.LayoutParams.WRAP_CONTENT; 
     window.setAttributes(lp); 
    } 
} 

Результат:

enter image description here

+0

Привет, я все еще получаю белый цвет backgroud. –

+0

попробуйте добавить android: background = @ android: color/transparent в вашем RelativeLayout в макете диалога. Но это странно для меня, потому что в моем тестовом приложении все отлично работает –

+0

Я пробовал. такой же результат. –

Смежные вопросы