更改警报主题对话框大小

时间:2017-12-24 17:08:57

标签: android

我是android的新手,所以我正在玩活动,片段和其他东西。

这是我的最终目标:

enter image description here

当前情况:

enter image description here enter image description here

问题在于我已将layout_width设置为match_parent所以,现在当对话框出现时,它会根据wrap_content设置自己,因此根据子项大小,对话框正在获取设置宽度。

我想要的是对话框是全长的;宽度明智。

我尝试了什么: this answer

基本上我认为会覆盖主题,并会手动添加其宽度。

<style name="Theme.Transparent" parent="Theme.AppCompat.Light.Dialog">
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:width">@dimen/dialog_width</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowAnimationStyle">@android:style/Animation</item>
    </style>

dimens.xml

<dimen name="dialog_width">@dimen/match_parent</dimen>

attribs.xml

<resources>
    <item name="match_parent" type="dimen">-1</item>
    <item name="wrap_content" type="dimen">-2</item>
</resources>

这不起作用;它让我的应用程序崩溃。

我的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="wrap_content"
    android:background="#ffff"
    android:id="@+id/dialogParent1">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/dialogParent2"
        android:orientation="horizontal">
        <ImageView
            android:layout_weight="1"
            android:contentDescription="@string/contains_song_thumbnail"
            android:layout_width="0dp"
            android:layout_height="40dp"
            android:id="@+id/dialogThumnbnail"
            android:layout_margin="10dp"
            android:background="@mipmap/ic_music_note_black_24dp"
            />

        <TextView
            android:layout_weight="6"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:gravity="center"
            android:id="@+id/dialogTextview"
            android:scrollHorizontally="true"
            android:freezesText="true"
            android:ellipsize="marquee"
            android:marqueeRepeatLimit="marquee_forever"
            android:focusableInTouchMode="true"
            />

        <ToggleButton
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text=""
            android:textOff=""
            android:layout_margin="5dp"
            android:id="@+id/dialogControl"
            android:background="@drawable/ic_play_pause_small"
            android:textOn="" />
    </LinearLayout>
    <android.support.v4.widget.Space
        android:layout_width="match_parent"
        android:layout_height="20dp" />
    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_height="wrap_content">
        <SeekBar
            android:id="@+id/dialogSeekbar"
            android:layout_width="0dp"
            android:layout_weight="4"
            android:layout_height="wrap_content"
            />
        <TextView
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="@string/app_name"
            android:textSize="10sp"
            android:textStyle="bold"
            android:gravity="center"
            />
    </LinearLayout>

    <android.support.v4.widget.Space
        android:layout_width="match_parent"
        android:layout_height="20dp" />

问题是如何修复大小以及如何自定义对话框主题以正确设置?

P.s:这不是对话,而是一个活动,我刚刚使用了对话框主题。

1 个答案:

答案 0 :(得分:0)

通过用此替换XML来检查

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/dialogParent1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ffff"
    android:orientation="vertical"
    android:padding="10dp">

    <RelativeLayout
        android:id="@+id/dialogParent2"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/dialogThumnbnail"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:background="@mipmap/ic_launcher"
            android:contentDescription="@string/app_name" />

        <TextView
            android:id="@+id/dialogTextview"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_marginHorizontal="10dp"
            android:layout_toLeftOf="@+id/dialogControl"
            android:layout_toRightOf="@+id/dialogThumnbnail"
            android:ellipsize="marquee"
            android:focusableInTouchMode="true"
            android:freezesText="true"
            android:gravity="center"
            android:marqueeRepeatLimit="marquee_forever"
            android:maxLines="2"
            android:scrollHorizontally="true" />

        <ToggleButton
            android:id="@+id/dialogControl"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_gravity="right"
            android:background="@mipmap/ic_launcher"
            android:text=""
            android:textOff=""
            android:textOn="" />
    </RelativeLayout>

    <android.support.v4.widget.Space
        android:layout_width="match_parent"
        android:layout_height="20dp" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <SeekBar
            android:id="@+id/dialogSeekbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_toLeftOf="@+id/tv1" />

        <TextView
            android:id="@+id/tv1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:text="@string/app_name"
            android:textSize="10sp"
            android:textStyle="bold" />
    </RelativeLayout>

</LinearLayout>

我认为这肯定会奏效。