在模拟器上找不到浮动动作按钮

时间:2019-07-10 14:42:47

标签: android android-layout android-emulator floating-action-button

我用ImageViewVideoView和浮动操作按钮创建了一个布局。我的想法是继续在VideoViewImageView上方显示浮动操作按钮。

下面是我的XML代码,看起来浮动操作按钮隐藏在ImageViewVideoView后面。任何帮助将不胜感激。

<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="fill_parent"
    android:layout_height="fill_parent"
    android:background="#000000"
    android:contentDescription="@string/app_name"
    android:id="@+id/frame"
    tools:context="com.serv24.eframe.FullscreenActivity" >

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|left"
        android:visibility="visible"
        tools:visibility="visible" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|end"
        android:src="@android:drawable/ic_dialog_email"
        android:visibility="visible"
        app:backgroundTint="@android:color/holo_red_dark"
        app:rippleColor="?android:attr/colorActivatedHighlight" />

    <VideoView
        android:id="@+id/videoView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical|center_horizontal"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical|center_horizontal"
        android:contentDescription="@string/app_name"
        android:visibility="visible" />
</FrameLayout>

2 个答案:

答案 0 :(得分:1)

我建议您使用RelativeLayout而不是FrameLayout来简化实施。您只需要将元素放在其他元素下方,即可放在布局中上方元素的上方。我正在使用RelativeLayout分享您的版式版本。希望有帮助!

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/frame"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#000000">

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentBottom="true" />

    <VideoView
        android:id="@+id/videoView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="invisible" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:contentDescription="@string/app_name" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_margin="16dp"
        android:src="@android:drawable/ic_dialog_email"
        android:visibility="visible"
        app:backgroundTint="@android:color/holo_red_dark"
        app:rippleColor="?android:attr/colorActivatedHighlight" />

</RelativeLayout>

答案 1 :(得分:0)

在FrameLayout中添加的项目彼此叠加,因此最新添加的项目位于之前的项目之上。

在您的情况下,您首先添加了ProgressBar,然后添加了显示在ProgressBar上方的FloatingActionButton,之后又添加了显示在FloatingActionButton上方的VideoView(如果VideoView为全屏,它将隐藏您之前放置的所有内容)最后是ImageView,它显示在其他所有内容的顶部。

您可以想到它就像将纸页放在一张桌子上一样。

因此,要显示您的工厂,应将其放置在xml中的最后一个位置(在ImageView之后)。