使用布局作为其他布局的背景

时间:2018-08-24 23:48:51

标签: android android-layout

即使看起来很简单也找不到。

我的问题很简单,我具有以下登录布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SignupActivity"
    android:orientation="vertical"
    android:background="@android:color/transparent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sign Up"
        android:textSize="48sp"
        android:textColor="@color/white"
        android:layout_gravity="center"
        android:paddingTop="30dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="All fields are required."
        android:layout_gravity="center"
        android:paddingTop="100dp"/>

    <android.support.v7.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        app:cardElevation="20dp"
        app:cardCornerRadius="15dp"
        android:layout_gravity="center">

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

            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:hint="Username"
                android:layout_gravity="center"
                android:id="@+id/usernametext"
                android:padding="15dp"
                android:ems="10"
                android:textAlignment="center"/>

            <EditText
                android:id="@+id/passwordtext"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:hint="Password"
                android:layout_gravity="center"
                android:padding="15dp"
                android:inputType="textPassword"
                android:textAlignment="center"/>

            <EditText
                android:id="@+id/emailtext"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:ems="10"
                android:padding="15dp"
                android:hint="Email"
                android:textAlignment="center"
                android:inputType="textEmailAddress" />

        </LinearLayout>

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

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Submit"
        android:layout_gravity="center"
        android:layout_marginTop="50dp"
        android:id="@+id/submitButton"/>


</LinearLayout>

然后我做了另一种布局,只使用一个ImageView并将其放置在具有特定alpha值的中心。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@drawable/mtrigenicon"
        android:alpha="0.25"
        android:scaleX="3"
        android:scaleY="3" />

</RelativeLayout>

问题是,是否可以将第二个布局用作第一个布局的背景?我的意思是,要在第一个布局的所有EditText和TextViews下面使用ImageView,即使将ImageView集成在第一个布局上也可以解决方案,但我不知道如何使其在背景上以及在所有其他对象的下方。

3 个答案:

答案 0 :(得分:1)

是的,有可能。尝试使用此布局。

在xml视图中,绘制的顺序与放置顺序相同,因此只需将图像视图放在最前面,然后在顶部绘制线性布局。像这样:

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

<ImageView
    android:layout_width="wrap_content"
    android:gravity="center"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:src="@drawable/mtrigenicon"
    android:alpha="0.25"
    android:scaleX="3"
    android:scaleY="3" />


     Put your linear layout here
    <LinearLayout></LinearLayout>

</RelativeLayout>

答案 1 :(得分:1)

首先,您可以直接将imageview作为登录布局的背景。否则,如果要将第二个布局用作任何布局的背景,则可以在android xml中使用<include标签。

只需将您的根布局设置为FrameLayout,您要在其中的布局包括背景布局。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent">

<include
    layout="@layout/activity_background" /> //Here is the include part. Below as same as previous.

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

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Sign Up"
    android:textSize="48sp"
    android:textColor="@android:color/white"
    android:layout_gravity="center"
    android:paddingTop="30dp"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="All fields are required."
    android:layout_gravity="center"
    android:paddingTop="100dp"/>

<android.support.v7.widget.CardView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="40dp"
    app:cardElevation="20dp"
    app:cardCornerRadius="15dp"
    android:layout_gravity="center">

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

        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="Username"
            android:layout_gravity="center"
            android:id="@+id/usernametext"
            android:padding="15dp"
            android:ems="10"
            android:textAlignment="center"/>

        <EditText
            android:id="@+id/passwordtext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:hint="Password"
            android:layout_gravity="center"
            android:padding="15dp"
            android:inputType="textPassword"
            android:textAlignment="center"/>

        <EditText
            android:id="@+id/emailtext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:padding="15dp"
            android:hint="Email"
            android:textAlignment="center"
            android:inputType="textEmailAddress" />

    </LinearLayout>

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

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Submit"
    android:layout_gravity="center"
    android:layout_marginTop="50dp"
    android:id="@+id/submitButton"/>

</LinearLayout>

</FrameLayout>

activity_background.xml (与您的布局相同)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:src="@drawable/canoe_water_nature_480_670"
    android:alpha="0.25"
    android:scaleX="3"
    android:scaleY="3" />

输出

enter image description here

答案 2 :(得分:0)

在第一个布局中使用RelativeLayout而不是LinearLayout并将ImageView添加到其中。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SignupActivity"    
android:background="@android:color/transparent">
<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:src="@drawable/mtrigenicon"
    android:alpha="0.25"
    android:scaleX="3"
    android:scaleY="3" />
<TextView
    android:id="+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Sign Up"
    android:textSize="48sp"
    android:layout_below="id/your_imageview_id"
    android:textColor="@color/white"
    android:layout_gravity="center"
    android:paddingTop="30dp"/>

<TextView
    android:id="+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="All fields are required."
    android:layout_gravity="center"
    android:layout_below="id/text1"
    android:paddingTop="100dp"/>

<-- your rest of the layout -->

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Submit"
    android:alignParentBottom="true"
    android:layout_gravity="center"
    android:layout_marginTop="50dp"
    android:id="@+id/submitButton"/>


</RelativeLayout>

请确保根据您的要求配置布局,因为LinearLayout会自动进行布局,但是在RelativeLayout中,您必须自己进行布局。