Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:点击按钮从屏幕底部显示布局_Android - Fatal编程技术网

Android:点击按钮从屏幕底部显示布局

Android:点击按钮从屏幕底部显示布局,android,Android,最近,我在play store安装了一个名为walnut的应用程序,在那里我看到了一个弹出窗口的新功能。在主屏幕上有一个浮动操作菜单,当单击菜单按钮时,它将展开其中的项目,在展开的菜单上有一个添加帐户的选项,点击该选项后,屏幕底部会弹出一个特定高度的弹出窗口。我想知道屏幕底部弹出窗口的功能是什么。它真的是弹出窗口还是滑动抽屉?我想在我的android应用程序中使用完全相同的功能。如果有人知道这个功能,请帮助我。下面是这个弹出式布局的屏幕截图,它出现在胡桃木应用程序中的按钮点击上。 使用snack

最近,我在play store安装了一个名为walnut的应用程序,在那里我看到了一个弹出窗口的新功能。在主屏幕上有一个浮动操作菜单,当单击菜单按钮时,它将展开其中的项目,在展开的菜单上有一个添加帐户的选项,点击该选项后,屏幕底部会弹出一个特定高度的弹出窗口。我想知道屏幕底部弹出窗口的功能是什么。它真的是弹出窗口还是滑动抽屉?我想在我的android应用程序中使用完全相同的功能。如果有人知道这个功能,请帮助我。下面是这个弹出式布局的屏幕截图,它出现在胡桃木应用程序中的按钮点击上。

使用snackbar实现此目的

Snackbar snackbar = Snackbar
        .make(coordinatorLayout, "Welcome to AndroidHive", Snackbar.LENGTH_LONG);

snackbar.show();
XML设计:


获得参考您可以使用BottomSheetLayout


您可以使用带有自定义布局的对话框。你们要做的唯一一件事就是从底部调用它,并像这样使用“样式作为材质”对话框

 final Dialog mBottomSheetDialog = new Dialog(getActivity(), R.style.MaterialDialogSheet);
                            mBottomSheetDialog.setContentView(view); // your custom view.
                            mBottomSheetDialog.setCancelable(true);
                            mBottomSheetDialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                            mBottomSheetDialog.getWindow().setGravity(Gravity.BOTTOM);
                            mBottomSheetDialog.show();
我将布局高度改为800而不是包裹内容,结果如下

style.xml

<style name="MaterialDialogSheet" parent="@android:style/Theme.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:backgroundDimEnabled">true</item>
        <item name="android:windowIsFloating">false</item>
        <item name="android:windowAnimationStyle">@style/MaterialDialogSheetAnimation</item>
    </style>



<style name="MaterialDialogSheetAnimation">
        <item name="android:windowEnterAnimation">@anim/popup_show</item>
        <item name="android:windowExitAnimation">@anim/popup_hide</item>
    </style>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="100%p"
        android:toYDelta="0"
        android:duration="300"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="0"
        android:toYDelta="100%p"
        android:duration="300"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
</set>

真的
@android:彩色/透明
@空的
真的
真的
假的
@style/MaterialDialogSheet动画
@动画/弹出式节目
@动画/弹出窗口隐藏
动画

弹出显示.xml

<style name="MaterialDialogSheet" parent="@android:style/Theme.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:backgroundDimEnabled">true</item>
        <item name="android:windowIsFloating">false</item>
        <item name="android:windowAnimationStyle">@style/MaterialDialogSheetAnimation</item>
    </style>



<style name="MaterialDialogSheetAnimation">
        <item name="android:windowEnterAnimation">@anim/popup_show</item>
        <item name="android:windowExitAnimation">@anim/popup_hide</item>
    </style>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="100%p"
        android:toYDelta="0"
        android:duration="300"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="0"
        android:toYDelta="100%p"
        android:duration="300"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
</set>

弹出隐藏.xml

<style name="MaterialDialogSheet" parent="@android:style/Theme.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:backgroundDimEnabled">true</item>
        <item name="android:windowIsFloating">false</item>
        <item name="android:windowAnimationStyle">@style/MaterialDialogSheetAnimation</item>
    </style>



<style name="MaterialDialogSheetAnimation">
        <item name="android:windowEnterAnimation">@anim/popup_show</item>
        <item name="android:windowExitAnimation">@anim/popup_hide</item>
    </style>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="100%p"
        android:toYDelta="0"
        android:duration="300"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="0"
        android:toYDelta="100%p"
        android:duration="300"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
</set>


您拥有的是一个自定义视图;所以尝试使用SnackBar会有很多麻烦。但是,使用BottomSheet()可以更轻松地实现这一点。

您可以提供walnut应用程序的屏幕截图吗。我几乎无法想象你试图实现的目标。我将附加它。请稍候。@ribads我已附加了屏幕截图。请看一看。最好使用底层第三方库。@KJEjava48使用自定义设计的snackBar。请参阅回答我认为snackbar用于显示带有操作的消息。据我所知,它仅包含一个textView和一个操作。我认为我们无法使用xml布局自定义此操作。请查看我在问题中附带的屏幕截图中的布局。我在添加屏幕截图之前发布了此答案。有没有不使用第三方图书馆??当然。您只需要找到一种将自定义视图膨胀到活动的方法。然后根据要显示视图的事件管理其可见性(可能是动画)。更不用说,您还需要处理活动中的州费用,如反压、旋转和其他可能影响布局的更改。@Raja Jawahar有没有办法不使用第三方库来做到这一点??@KJEjava48。。Android为该选项提供了支持库。可能是因为效果完全相同。等等,我将发送我的弹出图像。哦,对不起,我弄错了。这是我的老项目,我忘了:)我正在更新我的答案。暂时放在抽屉里。很好。ohk忘记了在资源中创建动画文件夹并在其中添加xml。