【问题标题】:remove border, padding from Dialog从对话框中删除边框,填充
【发布时间】:2012-01-12 14:46:32
【问题描述】:

我有一个主题为 Theme.Transparent 的活动:

<style name="Theme.Transparent" parent="android:Theme.Dialog">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">false</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
    <item name="android:gravity">top</item>
</style>

我正在尝试摆脱边框和它周围的填充。我想填充屏幕的水平方向。并且没有灰色边框。 请帮忙 :)

【问题讨论】:

    标签: android user-interface android-activity android-ui


    【解决方案1】:

    确保创建引用自定义主题的对话框:

    Dialog dialog = new Dialog(this, R.style.MyDialogTheme);
    

    您的自定义主题需要填满屏幕并禁用几个Android framework defaults

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="MyDialogTheme" parent="android:Theme.Dialog">
            <!-- Fill the screen -->
            <item name="android:layout_width">fill_parent</item>
            <item name="android:layout_height">fill_parent</item>
    
            <!-- No backgrounds, titles or window float -->
            <item name="android:windowBackground">@null</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowIsFloating">false</item>      
    
            <!-- Just to prove it's working -->
            <item name="android:background">#ff0000</item>
        </style>
    
    </resources>
    

    【讨论】:

    • 谢谢! :) ​​@null 成功了!我只能在 17 小时内奖励赏金。但是我会。非常感谢。
    • 乐于助人;很惊讶没有人回答这个问题。这当然不是很明显,但是检查 github 上的 Android 源代码可以帮助弄清楚默认情况下发生了什么!
    • 我希望我能投票两次。窥视的注意事项:清空 windowBackground 是让对话框显示 FLUSH 的唯一方法 - 即没有提示它后面的视图。大卫,你摇滚。
    • 感谢@DavidCaunt 先生的出色解决方案 +1
    【解决方案2】:

    与上面相同,但在代码中而不是在 xml 中对我有用。

        getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    

    【讨论】:

    • 我发现这种方式不如公认的答案好。这种方式只是淡化对话框周围的任何填充,但并没有真正删除填充。当用户单击对话框以取消它但不会被取消时,这是一个问题,因为填充仍然存在但透明。
    • 完美的伙伴!救了我!
    【解决方案3】:

    设置宽度和高度以匹配父容器。

        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        WindowManager.LayoutParams wmlp = dialog.getWindow()
                .getAttributes();
        wmlp.width = android.view.WindowManager.LayoutParams.MATCH_PARENT;
        wmlp.height = android.view.WindowManager.LayoutParams.WRAP_CONTENT;
    

    【讨论】:

      【解决方案4】:

      以下内容非常适合我。它让我有一个全宽对话框(填充屏幕的宽度,没有填充),但使用 wrap_content 作为高度,它保留了我在构建器中所做的所有其他样式:

      <item name="windowMinWidthMajor">100%</item>
      <item name="windowMinWidthMinor">100%</item>
      
      <item name="android:windowBackground">@null</item>
      <item name="android:windowIsFloating">true</item>
      
      <item name="android:background">#ffffff</item>
      

      背景是必需的,否则它会重复发生奇怪的事情,但只需将其设置为您希望对话背景的颜色即可。需要 WindowBackground 和 WindowIsFloating 才能使尺寸正确换行。

      像这样将你的主题添加到你的构建器中:

      builder = new AlertDialog.Builder(_context, R.style.DialogTheme); 一切顺利!

      【讨论】:

        猜你喜欢
        • 2022-01-25
        • 1970-01-01
        • 2016-04-09
        • 2016-05-02
        • 2014-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多