【问题标题】:Android - set style for dialog fragmentAndroid - 为对话框片段设置样式
【发布时间】:2016-11-09 08:49:02
【问题描述】:

我想创建带有黑色 windowBackground 的片段对话框,但是当我添加样式时,片段周围有一个黑框。有人知道为什么这个框架出现在我的片段中吗:

这是我的片段 xml:

  `  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/tocLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/clean_backgroung_pop_up_ltr"
    android:padding="20dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/settings_border"
        android:orientation="vertical">

        <FrameLayout
            android:id="@+id/title_layout_settings"
            style="@style/reader_dialog_title">

            <TextView
                android:id="@+id/title_txt_settings"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:layout_weight="4"
                android:gravity="center"
                android:text="@string/menu_settings"
                android:textColor="@color/white_color"
                android:textSize="@dimen/global_text_size" />

            <ImageView
                android:id="@+id/imvClose"
                android:layout_width="@dimen/global_close_button_width"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical|right"
                android:layout_weight="1"
                android:padding="@dimen/global_padding"
                android:src="@drawable/icon_close_window" />

            <ImageView
                android:id="@+id/title_txt_settings_icon"
                android:layout_width="@dimen/global_image_width"
                android:layout_height="match_parent"
                android:layout_gravity="center_vertical|left"
                android:layout_weight="1"
                android:padding="@dimen/global_padding"
                android:scaleType="center"
                android:src="@drawable/toolbar_settings_button_heb" />
        </FrameLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:paddingLeft="@dimen/global_margin_s"
            android:paddingRight="@dimen/global_margin_s">

            <FrameLayout
                android:id="@+id/tts_layout_settings"
                android:layout_width="@dimen/settings_screen_popover_width"
                android:layout_height="@dimen/settings_screen_layout_height"
                android:gravity="center_horizontal"
                android:longClickable="true">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="@dimen/settings_screen_seek_bar_hight"
                    android:layout_centerHorizontal="true"
                    android:layout_gravity="center"
                    android:background="@drawable/tts_rabbit_turtle"
                    android:gravity="center_horizontal" />

                <SeekBar
                    android:id="@+id/tts_speed_settings_seek"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_gravity="center"
                    android:layout_marginLeft="@dimen/global_book_reader_menus_margin_l"
                    android:layout_marginRight="@dimen/global_book_reader_menus_margin_l"
                    android:max="4"
                    android:maxHeight="1dp"
                    android:progressDrawable="@drawable/seek_bar"
                    android:thumb="@drawable/sliderknob_23" />
            </FrameLayout>

            <View
                android:id="@+id/setting_seperator"
                android:layout_width="@dimen/settings_screen_popover_width"
                android:layout_height="1dp"
                android:layout_below="@id/tts_speed_settings_seek"
                android:background="#CECECE"
                android:drawablePadding="@dimen/global_margin_s" />

            <FrameLayout
                android:id="@+id/brightness_layout_settings"
                android:layout_width="@dimen/settings_screen_popover_width"
                android:layout_height="@dimen/settings_screen_layout_height">

                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="@dimen/settings_screen_seek_bar_hight"
                    android:layout_centerHorizontal="true"
                    android:layout_gravity="center"
                    android:background="@drawable/bright"
                    android:gravity="center_horizontal" />

                <SeekBar
                    android:id="@+id/brightness_settings_seek"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_marginLeft="@dimen/global_book_reader_menus_margin_l"
                    android:layout_marginRight="@dimen/global_book_reader_menus_margin_l"
                    android:backgroundTint="@color/application_gray"
                    android:maxHeight="1dp"
                    android:progressDrawable="@drawable/seek_bar"
                    android:thumb="@drawable/sliderknob_23" />
            </FrameLayout>

            <View
                android:layout_width="@dimen/settings_screen_popover_width"
                android:layout_height="1dp"
                android:layout_below="@+id/brightness_settings_seek"
                android:background="#CECECE"
                android:drawablePadding="@dimen/global_margin_s"
                android:gravity="center" />


            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="@dimen/settings_screen_sub_layout_height">

                <Switch
                    android:id="@+id/switchHighlights"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left|center_vertical"
                    android:text="@string/show_highlights_info"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="@color/settings_text_color"
                    android:id="@+id/txvShowHighligtsInfo" />
            </FrameLayout>

            <View
                android:layout_width="@dimen/settings_screen_popover_width"
                android:layout_height="1dp"
                android:layout_below="@+id/brightness_settings_seek"
                android:background="#CECECE"
                android:drawablePadding="@dimen/global_margin_s"
                android:gravity="center" />


            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="@dimen/settings_screen_sub_layout_height">

                <Switch
                    android:id="@+id/switchTheme"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical" />

                <TextView
                    android:id="@+id/txvNightTheme"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left|center_vertical"
                    android:text="@string/search_popup_night_theme_txt"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="@color/settings_text_color" />
            </FrameLayout>

            <View
                android:layout_width="@dimen/settings_screen_popover_width"
                android:layout_height="1dp"
                android:layout_below="@+id/brightness_settings_seek"
                android:background="#CECECE"
                android:drawablePadding="@dimen/global_margin_s"
                android:gravity="center" />

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="@dimen/settings_screen_sub_layout_height">

                <Switch
                    android:id="@+id/switchLockScreen"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|center_vertical" />

                <!--       <android.support.v7.widget.SwitchCompat
                           android:id="@+id/switchLockScreen"
                           android:layout_width="153dp"
                           android:layout_height="wrap_content"
                           android:layout_gravity="center_vertical|left"
                           android:theme="@style/MySwitch" />   -->

                <TextView
                    android:id="@+id/txvLockScreen"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="left|center_vertical"
                    android:text="@string/search_popup_lock_screen_txt"
                    android:textAppearance="?android:attr/textAppearanceMedium"
                    android:textColor="@color/settings_text_color" />
            </FrameLayout>


        </LinearLayout>


    </LinearLayout>

    <!-- Font seek bar  -->

    <!-- Brighness -->

    <!--Night mode-->


</LinearLayout>`

这是我的风格:

<style name="MyDialog" parent="@android:style/Theme.DeviceDefault.Light.Dialog"> <item name="android:windowBackground">@color/trans_black_second</item> </style>

这就是我在 DialogFragment 中设置它的方式:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.i(TAG,"BookDialog onCreate");
    setCancelable(true);
    if ( mBookReader != null && inflater == null) {
        inflater = (LayoutInflater) mBookReader.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mWindowManager = (WindowManager)mBookReader.getSystemService(Context.WINDOW_SERVICE);
    }
    tfOpenSansHebrew =  FontUtils.getFont(getActivity(), FontUtils.FONT_OPEN_SANS);

    setStyle(DialogFragment.STYLE_NO_FRAME, R.style.MyDialog);

}

【问题讨论】:

  • 试试这个代码:getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  • 我需要把代码放在哪里? (onCreate, onCreateDialog getDialog 为空)
  • 用于:onCreateView

标签: android styles fragment dialogfragment


【解决方案1】:

您的对话框已经有android:background="@drawable/clean_backgroung_pop_up_ltr 行引用的背景。如果要将其更改为深色,则必须修改可绘制对象。您可以以编程方式应用这些转换,也可以简单地使用第一个作为基础创建另一个可绘制对象。

另外别忘了把对话框主题改成Theme.DeviceDefault.Dialog,否则对话框中的元素在深色背景下会显得很糟糕。

现在发生的情况是窗口的背景被绘制为一个黑色矩形,然后布局的背景被绘制在它上面。当然,您可以确保窗口背景与布局背景具有相同的形状,但在这种情况下,它将完全隐藏在后者之下,因此绝对没有用。

【讨论】:

  • android:background="@drawable/clean_backgroung_pop_up_ltr.是我讲windowBackground的片段的背景
  • @gilcohen 是的,如果您想将对话框的背景更改为深色,您已经停止使用它。如果您想做其他事情,请指出您想要什么。我已经更新了答案,所以它更清楚了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 2018-03-04
  • 1970-01-01
相关资源
最近更新 更多