我是android的新手,所以我正在玩活动,片段和其他东西。
这是我的最终目标:
当前情况:
问题在于我已将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:这不是对话,而是一个活动,我刚刚使用了对话框主题。
答案 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>
我认为这肯定会奏效。