我的活动的主要布局是LinearLayout
。它有两个孩子作为例子。一个RelativeLayout
和一个按钮。 RelativeLayout
的宽度和高度设置为match_parent
,按钮设置为match_parent
和wrap_content
。不幸的是,RelativeLayout
按下按钮直到它不可见。
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
为什么会这样?我尝试对RelativeLayout
进行调整,将高度改为0dp
,重量为1.它确实使按钮可见,但我不确定这是否可取,因为我只改变了身高和体重RelativeLayout
。
答案 0 :(得分:3)
试试这个
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:fillViewport="true"
android:layout_height="match_parent">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
OR
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:fillViewport="true"
android:layout_height="match_parent">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_above="@+id/btn"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:src="@drawable/disha"
android:layout_height="match_parent" />
</RelativeLayout>
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_margin="10dp"
android:text="NIlu"
android:layout_alignParentBottom="true"
android:layout_height="wrap_content" />
</RelativeLayout>
</ScrollView>
答案 1 :(得分:2)
LinearLayout
是垂直或水平。您的第一个孩子RelativeLayout
是matchParent
,然后它将覆盖整个外部布局。
解决方案可以是多个,取决于您希望放置Button
的确切位置。一种方法是。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_above="@+id/btn"
android:layout_height="match_parent">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_margin="10dp"
android:layout_alignParentBottom="true"
android:layout_height="wrap_content" />
</RelativeLayout>
答案 2 :(得分:1)
更改您的代码
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
<Button
android:text="@string/app_name"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
我的敌人......
您应该将android:layout_weight="1"
提供给相对布局
答案 3 :(得分:0)
//试试这个
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="match_parent"
android:layout_height="200dp" />
</RelativeLayout>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
答案 4 :(得分:0)
这似乎工作得很好。
我尝试对RelativeLayout进行调整,将高度更改为 0dp,权重为1
代码如下所示:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
答案 5 :(得分:0)
在您的布局中,RelativeLayout
是您LinearLayout
的第一个孩子。因为,您已将高度和宽度设置为match_parent
,它会占用所有可用空间,将按钮推出视图。
当您将RelativeLayout
高度设置为0dp
且权重设置为1时,LinearLayout
会根据指定的尺寸首先布置所有子项,然后根据权重分配剩余空间。在这种情况下,相对布局为0dp
,因此在第一次传递时不占用空格,按钮会根据其onMeasure
占用空间(比如说100dp
)。剩余空间现在提供给RelativeLayout
,因为其权重设置为1.有关详细信息here,请参阅LinearLayout文档。
您应该考虑使用RelativeLayout
/ ConstraintLayout
作为根元素。