如何为Android的布局组件添加灵活的大小调整

时间:2019-07-19 10:33:37

标签: android android-layout android-recyclerview

有没有办法在android布局的XML中添加灵活的大小调整属性。 我要添加元素,以使一个元素的高度/宽度等于父元素的高度减去另一元素的高度。

就像CSS一样,我们可以使用calc()函数 例如:calc(100%-100px)

有没有办法在android中做类似的事情,例如:

我设置了

android:layout_height="?attr/actionBarSize"

那么,有什么类似的东西

<RecyclerView 
  android:layout_height = "(match_parent - ?attr/actionBarSize)"/>

是否可以通过XML本身来实现这一目标,而不是通过Java来实现?

2 个答案:

答案 0 :(得分:2)

不,没有。但是您可以使用边距来做到这一点。

例如,如果您需要从底部“削减” RelativeLayout的高度,则可以使用:

android:layout_marginBottom="?android:attr/actionBarSize"

或者如果您想从顶部开始:

android:layout_marginTop="?android:attr/actionBarSize"

答案 1 :(得分:1)

是的,您可以按照以下相对布局进行操作

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

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true" />

    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/button" />

</RelativeLayout>

在上面的代码中,我首先在底部放置了按钮,现在我想显示列表视图的剩余位置。因此,我将listview放在按钮上方,并将其设置为match_parent。这样它将保留所有剩余空间。