我的名字是乔希。我试图在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>
我遇到的唯一问题是,我无法弄清楚如何分割布局,如图所示。
答案 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>