android自定义对话框半透明边距

时间:2015-05-18 20:38:58

标签: android dialog themes

如何在弹出对话框周围自定义半透明区域的外观?也就是说,显示潜在活动的区域。

正在使用

启动弹出活动
Intent intent = new Intent (app, MyPopup.class);
app.startActivityForResult (intent, requestCode);

其中app是当前活动。

XML文件的顶层是ScrollView。我已尝试在那里设置背景,但忽略该设置。同样,我已经尝试调整边距,但也会忽略这些边距。 (注意 - 我现在意识到边距仅适用于LinearLayout;请忽略该问题。)例如:

<ScrollView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_margin="20dp"
  android:maxWidth="200dp" >

在上面,忽略margin和maxWidth。

而且,我尝试过设置自定义样式:

<style name="PopupTheme" parent="android:style/Theme.Dialog">
  <item name="android:background">#FFF2F2F2</item>
  <item name="android:textColor">#FF000000</item>
  <item name="android:windowNoTitle">true</item>"
  <item name="android:backgroundDimEnabled">false</item>
  <item name="android:windowIsTranslucent">false</item>
  <item name="android:windowBackground">@drawable/dialog_background</item>
</style>

在这种风格中,backgroundDimEnabled确实有所作为 - 它允许原始活动以全亮度显示。但是其他属性似乎被忽略了。我尝试过这么多设置没有任何影响的事实让我相信,我要么缺少一些重要的“lynch pin”设置,要么谷歌硬编码过多的行为让这些设置起作用。

我可以在我的所有弹出窗口中添加另一个图层,其中图层是全屏的,并按照我想要的方式进行半透明,将真正的对话框置于其上。如果有正确的方法可以做我想做的事情,我宁愿不做一个解决方法。

感谢。

1 个答案:

答案 0 :(得分:0)

ScrollView存在问题,因为它从FrameLayout扩展,因此您无法对其应用边距。我可以做的是在ScrollView中创建一个LinearLayout并将边距应用于它。

类似的东西:

<ScrollView
                android:layout_width="fill_parent"
                android:layout_height="fill_parent">

                <LinearLayout
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="top"
                    android:layout_marginTop="30dp"
                    android:orientation="vertical" >
</ScrollView>