自定义对话框不需要的底部

时间:2015-02-27 19:51:13

标签: android android-dialog

我正在创建自定义对话框(不是DialogFragment或AlertDialog!)。

我的观点是它应该是全屏色调和按钮底部对齐一些小边距(我正在克隆iOS ActionSheet对话框。抱歉 - 不是我的想法:()。

我创建了一个落后于NavBar的对话框(我猜这需要背景色调为全屏),然后我在对话框窗口添加一些填充 - 与NavBar高度相同。

它工作正常,但它有一些额外的底部填充或边距 - 我无法找到它来自哪里。

这是Dialog的主题:

<style name="ActionSheetDialogTheme" parent="android:Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@style/ActionSheetDialogAnimationTheme</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
</style>

这是我修补对话框窗口大小和底部填充的方法:

private void patchDialogSize() {
    WindowManager manager = (WindowManager) getContext().getSystemService(Activity.WINDOW_SERVICE);

    int width = manager.getDefaultDisplay().getWidth();
    int height = manager.getDefaultDisplay().getHeight();

    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

    WindowManager.LayoutParams params = new WindowManager.LayoutParams();
    params.copyFrom(getWindow().getAttributes());
    params.width = width;
    params.height = height;
    getWindow().setAttributes(params);

    Resources resources = getContext().getResources();
    int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");
    if (resourceId > 0) {
        int bottomPadding = resources.getDimensionPixelSize(resourceId);
        Log.info(TAG, "NavBar height = " + bottomPadding + ", will be set as bottom padding");
        dialogContainer.setPadding(0, 0, 0, bottomPadding);
    }
}

日志写信给我I/ActionSheet﹕ NavBar height = 96, will be set as bottom padding

看起来像这样:

unwanded_space

如果我删除了对话框布局中的所有底部填充和边距并删除了NavBar高度修补,它看起来像这样:

still

根据我的逻辑,在最后一个截图按钮应该低于NavBar,所以它是一些不需要的填充大约10或15 dp。

有人可以帮我弄清楚它的来源吗?

P上。 S。:刚刚意识到:NavBar称其高度为96dp。它与我的按钮大约相同,高度为50dp。因此NavBar高度计算不正确,但为什么?

P上。 P. S.:再次 - 抱歉iOS的外观和感觉 - 真的不是我的想法。

0 个答案:

没有答案