2015-04-23 4 views
3

Я просто следую за этим http://www.laurivan.com/make-dialogs-obey-your-material-theme/ в стиле my alertdialog в стиле дизайна материалов. Тем не менее, я обнаружил, что я до сих пор не стиль такой же, как этот сайт, следующий мой код и скриншот:Alertdialog в дизайне материалов

значения-v14/styles.xml:

<!-- 
    Base application theme for API 14+. This theme completely replaces 
    AppBaseTheme from BOTH res/values/styles.xml and 
    res/values-v11/styles.xml on API 14+ devices. 
--> 
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.DarkActionBar"> 
    <!-- API 14 theme customizations can go here. --> 
</style> 

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowActionBarOverlay">true</item> 
    <!-- colorPrimary is used for the default action bar background --> 
    <item name="colorPrimary">@color/colorPrimary</item> 

    <!-- colorPrimaryDark is used for the status bar --> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 

    <item name="android:dialogTheme">@style/MyDialogTheme</item> 
    <item name="android:alertDialogTheme">@style/MyDialogTheme</item> 
</style> 

<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"> 
    <item name="android:windowBackground">@color/transparent</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowCloseOnTouchOutside">false</item> 
</style> 

значения/color.xml

<resources> 
    <color name="colorPrimaryDark">#3367d6</color> 
    <color name="colorPrimary">#4285f4</color> 
    <color name="windowBackgroundColor">#eeeeee</color> 
    <color name = "transparent">#0000</color> 
</resources> 

скриншот: enter image description here

Я хочу, чтобы разделитель был удален, а btn - в удобном стиле, спасибо!

+0

Используйте эту библиотеку https://github.com/afollestad/material-dialogs – NarenderNishad

+0

У меня была такая же проблема ... Я думаю, что у вас нет правильного AlertDialog импортированного ... проверьте его, если он из Android. support.v4.app.DialogFragment package. – box

ответ

10

С новым AppCompat v22.1 вы можете использовать новый android.support.v7.app.AlertDialog.

Просто используйте такой код:

import android.support.v7.app.AlertDialog 

AlertDialog.Builder builder = 
     new AlertDialog.Builder(this, R.style.AppCompatAlertDialogStyle); 
      builder.setTitle("Dialog"); 
      builder.setMessage("Lorem ipsum dolor ...."); 
      builder.setPositiveButton("OK", null); 
      builder.setNegativeButton("Cancel", null); 
      builder.show(); 

и использовать стиль, как это:

<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert"> 
     <item name="colorAccent">#FFCC00</item> 
     <item name="android:textColorPrimary">#FFFFFF</item> 
     <item name="android:background">#5fa3d0</item> 
    </style> 

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

+0

actully, я попробовал свои анды, прежде чем я спросил об этом, но он все еще не работает.ПредупреждениеDialog станет «материальным стилем» + «оригинальный стиль» –

+0

скриншот https://drive.google.com/open?id=0B4pDhq4Bu8xqWmdsdDdfdmxQZnZOd2JIQW4yM3BjNXpBWnIw&authuser=0 –

+0

Используете ли вы один стиль для всех устройств? Или вы переопределяете стиль в v-14? Ссылка не является общедоступной. Проверьте auth –

0

Лучшее решение, которое я нашел для укладки диалог должен включать свойства в вашем styles.xml, как вы, а также установить прозрачный цвет (в colors.xml) Не забудьте указать полный #AARRGGBB:

<color name="transparent">#00000000</color> 

Тогда и убедитесь, чтобы добавить тему в диалоговом макете:

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:theme="@style/AppTheme"> 
     <TextView 
      android:id="@+id/dialog_info" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="16dp" 
      android:layout_marginLeft="4dp" 
      android:layout_marginRight="4dp" 
      android:layout_marginBottom="4dp" 
      android:text="Dialog Text"/> 
    </LinearLayout> 

Примечание: вы должны установить в качестве родителя «MyDialogTheme» (в вашем примере) к родителю «Theme.AppCompat .Light.Dialog "

После раздела «Passing События Вернуться к хосту в Диалоге» в разработчиках руководство здесь: Link

убедившись, что переопределить как onAttach() и onCreateDialog() в классе для диалога фрагмента.

примечание, вы «не» должны сделать свой основной деятельностью продлить FragmentActivity, вы можете расширить AppCompatActivity и до сих пор включают в классе деятельности библиотеки (для API 11+):

android.app.DialogFragment вместо android.support.v4.app.DialogFragment

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

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