如何使 Android view width = (parent width - some constant)

How to make Android view width = (parent width - some constant)

我有一个布局,我试图让一个视图填充所有剩余的 space,除了最后的一些 50dp 宽度的图像。当我将第一个视图的宽度设置为 match_parent 时,它占据了整个视图,无论我设置图像的宽度是多少,它都位于屏幕边界之外。这是正在发生的事情:

但我想要这样:(通过将第一个视图的宽度设置为常量来实现,只是为了演示,我绝对不想要它,因为它应该填充一个动态量的宽度)

这是我当前的布局:

问题出在层次结构中头像视图正下方的 LinearLayout (vertical) 处。它占据了正确的 space,但 children 没有按我想要的方式运行。

如何实现所需的布局?

使用 RelativeLayout 进行布局,并在右侧设置中心 TextView 元素 属性 to_rightof ImageView。无论图像的大小如何,textview 都会自动调整其宽度。

看看这个例子。主要思想是为视图设置 android:layout_width="0dp"android:layout_weight="1",该视图必须占用所有可用的 space。在我的情况下它是 TextView 在你的情况下它可以是另一个布局或其他任何东西。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ....
        />
    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        ....
        />
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        ...
        />

</LinearLayout>

更新

可以在此处找到更多信息 question