如何仅将约束布局添加到浮动actio按钮?

时间:2019-10-10 08:08:36

标签: android-layout android-constraintlayout

我只想在约束框架布局的最后两个浮动操作按钮中添加两个约束布局。任何帮助将不胜感激。我的主要想法是能够从图形用户界面移动和定位浮动操作按钮。

我注意到android重力帮助通过

在右侧和右侧放置按钮
        android:layout_gravity="right|center"

如何在右边但在中心和底部之间添加一个按钮。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"

    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#000000"
    tools:context=".MediaPresentationActivity"
    android:id="@+id/FrameLayout">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent">


                <VideoView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:id="@+id/videoViewPresentation"
                    android:layout_gravity="center" />

                <ImageView
                    android:id="@+id/imageViewPresentation"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_gravity="left|top"
                    android:background="#ffffff"
                    android:src="@drawable/serv24logobig" />

            </FrameLayout>


        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        </LinearLayout>
    </LinearLayout>
//*how to add only below two floating action button as constrainlayout //

    <android.support.design.widget.FloatingActionButton

        android:id="@+id/fab1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_gravity="right|center"
        android:src="@android:drawable/stat_sys_phone_call"

        android:visibility="visible"

        app:backgroundTint="@android:color/holo_red_dark"
        app:elevation="12dp"
        app:rippleColor="?android:attr/colorActivatedHighlight" />


    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_gravity="right|center"
        android:src="@android:drawable/stat_sys_phone_call"
        android:visibility="visible"

        app:backgroundTint="?android:attr/colorMultiSelectHighlight"
        app:elevation="12dp"
        app:rippleColor="?android:attr/colorActivatedHighlight" />

</FrameLayout>

1 个答案:

答案 0 :(得分:0)

FrameLayouts仅允许一个孩子(很好,他们允许N个孩子,但它们重叠,因为它不支持孩子定位,而是希望它们占用所有可用空间),因此,如果要使用ConstraintLayout进行定位在FrameLayout中有两个项目,那么您需要确保FrameLayout的子项是一个ViewGroup,该子类可以定位其自己的子项。

让我们看看你得到了什么。

您的根是一个FrameLayout,也许您应该考虑使其成为ConstraintLayout开头...

您要让Root布局包装其内容。除非这是一个自定义视图,否则这会有些皱眉,但没有错;由于我不知道您的使用方式,因此在这种情况下很难确定这是否是正确的方法。

我不知道您的UI外观如何,但是据我所见,您有一系列嵌套的LinearLayouts,Vertical,然后为Horizo​​ntal来具有ImageView和VideoView ...不确定您的期望如何定位。

向下在您下面有一个空的LinearLayout ...(?)

,然后您扔了两个FAB。

这行不通。我建议您重新访问整个布局(顺便说一句,粘贴时不正确,因为您要关闭FrameLayout两次...)。

如果您发布所需输出的图像,也许我们可以帮助您更好地了解问题所在。因为它是不可能的,所以无法确定。

您目前所写问题的答案是:

“如何向最后两个FAB添加约束布局onlo?”

您不能(出于我认为想要的目的),但是如果您真的想知道原因以及将会发生什么:

只需在框架布局内添加

        <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
            >
            <!-- YOUR FABS GO HERE -->

        </androidx.constraintlayout.widget.ConstraintLayout>

这显然不会找到您想要的方式,但这就是为什么我在上面的评论中问您:“告诉我们您想要什么,我们需要minimal reproducible example}。

我之所以这么问是有原因的,不是要惹恼您,而是要帮助您。您选择忽略它,这是我所能尽力为您提供的信息。