如何在Android(工作室)中实现此布局

时间:2017-01-05 23:58:44

标签: android xml android-layout

我的名字是乔希。我试图在Android中实现以下布局,但我似乎无法拆分内部布局以获得我想要的布局。有人可以帮忙吗。

这是我到目前为止所做的:

<?xml version="1.0" encoding="utf-8"?>
<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:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.firstapplication.myapplication.MainActivity">

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

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/imageView" />

    </LinearLayout>

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

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:text="Name"
            android:ems="10"
            android:id="@+id/editText" />
    </LinearLayout>
</RelativeLayout>

我遇到的唯一问题是,我无法弄清楚如何分割布局,如图所示。

2 个答案:

答案 0 :(得分:0)

相应地设置LinearLayout的高度参数,以实现两个布局之间的所需比率。

<LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="**XYZ dp**"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true">

答案 1 :(得分:0)

你可以通过多种方式解决这个问题。我不知道你的布局要求,但你真的不需要两个LinearLayout来解决这个问题。但是,根据您目前的所有操作,您只需要为您的第一个LinearLayout ID设置,并将高度设置为wrap_content,如下所示:

<LinearLayout
        android:id="@+id/LL1"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true">

然后在第二个布局中将定位设置为低于第一个布局,将高度设置为wrap_content并移除layout_alignParentTop,否则第二个布局将与第一个布局重叠。所以你有第二个这样的东西:

<LinearLayout
        android:layout_below="@id/LL1"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true">

这将把第二个布局放在第一个布局下面,但是除非第一个布局始终是恒定高度,否则大小会有所不同。

如果您知道无论第一个布局高度如何,您总是想要70:30的比例,您可以使用layout_weights代替。我可以添加,如果那是你正在寻找的东西。

要获得固定比率,请将根布局更改为LinearLayout而不是RelativeLayout,然后将方向设置为垂直,将weightSum设置为1。

然后将您的第一个LinearLayout设置为0.7的layout_weight,将您的第二个LinearLayout设置为0.3的layout_weight。像这样:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1"
    android:orientation="vertical">

<LinearLayout
        android:id="@+id/LL1"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.7"></LinearLayout>

<LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="0.3"></LinearLayout>


</LinearLayout>