CoordinatorLayout将布局放在彼此的顶部

时间:2018-04-18 14:22:26

标签: android layout z-index android-coordinatorlayout

我有一个CoordinatorLayout,我希望FrameLayout位于所有其他Layouts and widgets之下。我尝试过使用android:layout_below/aboveapp:layout_constraintVertical_bias="0.0",但都没有超过FrameLayout的{​​{1}}。

我认为最简单的方法是将android:id="@+id/container"置于其他人之下。例如,在javascript中有FrameLayout

Z-index将包含来自FrameLayout的预览。

这是我的XML:

Google's Camera2 API

由于我正在学习,所有关于我风格的评论也欢迎!

1 个答案:

答案 0 :(得分:1)

我不知道我是否理解你在寻找什么,但我试图编辑它以订购所有组件。

在彼此之间订购视图的最佳方式(imo)是使用RelativeLayout,它允许您设置toLeftOfAboveBelow,..

试着看看这个:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:ignore="ExtraText">


    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#000"
        android:layout_alignParentBottom="true"
        tools:context="com.example.richard.smarttabs.SongPlayer" />

    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="54dp"
        android:layout_marginTop="8dp"
        android:fitsSystemWindows="true"
        android:background="#ffffff"
        android:theme="@style/AppTheme.AppBarOverlay"
        >

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:elevation="6dp"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

            <Button
                android:id="@+id/backToSongList"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Song List" />

        </android.support.v7.widget.Toolbar>

    </android.support.design.widget.AppBarLayout>

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/gameBoard"
        android:layout_width="match_parent"
        android:layout_height="132dp"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/app_bar"
        android:layout_marginBottom="8dp"
        android:layout_above="@id/songTitle"
        android:background="#c1c1c1"
        >

        <com.jjoe64.graphview.GraphView
            android:id="@+id/graph"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </android.support.design.widget.CoordinatorLayout>


    <ImageButton
        android:id="@+id/playRecord"
        android:layout_width="70dp"
        android:layout_height="75dp"
        android:layout_above="@+id/pitchText"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:background="#fff"
        android:src="@mipmap/ic_launcher"
        />

    <TextView
        android:id="@+id/pitchText"
        android:layout_width="wrap_content"
        android:layout_height="50dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:textSize="24sp"
        android:text="This is centered, above frame"
        android:textColor="#fff"
        android:layout_centerInParent="true"
        />

    <TextView
        android:id="@+id/songTitle"
        android:layout_width="380dp"
        android:layout_height="61dp"
        android:layout_above="@+id/playRecord"
        android:layout_marginBottom="12dp"
        android:layout_marginRight="8dp"
        android:text="TextView"
        android:textColor="#b3b3"
        android:textSize="24sp"
        android:textStyle="bold|italic"
        />


</RelativeLayout>

如果没有关于您所寻找内容的“指南”,我很难重现确切的预期结果,但这对您来说应该是一个开始。 (我更改了一些颜色和文字,以便在每个视图的位置更加明显)

RelativeLayout中,Z顺序只是关于哪个视图写在另一个视图之上,XML中的第一个是后面的,第二个是在它之上,依此类推。

如有任何帮助,请随意询问。我建议你看一下youtube上的一些教程,我主要喜欢TheNewBoston个,希望我能帮到你。

小提示

尝试使用dp的最小精确view值,因为它不会包装文本或适合屏幕尺寸,只需测试多种尺寸的布局并且内部有许多文本并寻求更好的结果。

即:你写了一个固定大小为113dp的TextView,但像"this is centered"这样的文字太大而被严重截断。在必要时使用精确的dp并检查它的许多屏幕尺寸(对于margins/paddings,在许多情况下需要精确的值)