Android 如何创建一个按钮至少与TextView一样长的布局?

Android 如何创建一个按钮至少与TextView一样长的布局?,android,android-layout,android-linearlayout,android-relativelayout,Android,Android Layout,Android Linearlayout,Android Relativelayout,我正在努力实现以下目标: 我需要在布局中的某个位置放置一个按钮视图 在用作标签的按钮的正上方应该有文本视图 按钮的大小应取决于文本视图的大小。由于应用程序是本地化的,因此文本宽度不是固定的,而是取决于用作标签的本地化文本 按钮的最小宽度应为150dp。如果文本视图的宽度大于此值,则按钮的宽度应与文本视图的宽度相同 这应该是这样的: Short Label +-------------+ +-------------+ Very Long Label Text +--------------

我正在努力实现以下目标:

  • 我需要在布局中的某个位置放置一个
    按钮
    视图
  • 在用作标签的
    按钮的正上方应该有
    文本视图
  • 按钮的大小应取决于
    文本视图的大小。由于应用程序是本地化的,因此文本宽度不是固定的,而是取决于用作标签的本地化文本
  • 按钮的最小宽度应为150dp。如果
    文本视图
    的宽度大于此值,则
    按钮
    的宽度应与
    文本视图
    的宽度相同
这应该是这样的:

Short Label
+-------------+
+-------------+

Very Long Label Text
+------------------+
+------------------+
我尝试了使用LinearLayout或RelativeLayout作为根布局的不同解决方案,但问题总是一样的:我无法将
按钮的宽度调整为
文本视图的宽度。当然,将
按钮的最小宽度设置为150dp没有问题。但是,如何解决第二种情况与长标签

<SomeRootLayout ...>
    <!-- also tried LinearLayout, but problem is the same... -->
    <RelativeLayout
        android:id="@+id/editTextAndLabelContainer"
        ...>

        <TextView
            android:id="@+id/labelTV"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="A " />

        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/labelTV" />
    </RelativeLayout>
</SomeRootLayout>

如果
按钮
具有“匹配父项”宽度,则宽度不会与
文本视图
对齐,而是设置为完整的屏幕宽度

如何解决此问题?


<RelativeLayout
        android:id="@+id/editTextAndLabelContainer"
        ...>

        <TextView
            android:id="@+id/labelTV"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="A " />

        <Button
            android:id="@+id/button"
            android:layout_alignLeft="@+id/labelTV" //<== add this line
            android:layout_alignRight="@+id/labelTV" //<== add this line
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/labelTV" />
    </RelativeLayout>
好的,做一些像这样的事情: 布局:


通过编程实现..通过getwidth()为textview…如果更大,则将按钮的宽度设置为与textview相同…非常感谢!我不知道不同的路线可以合并。。。这个解决方案非常有效!
 <LinearLayout
    android:id="@+id/editTextAndLabelContainer"
    android:weightSum="2"
    ...>

    <TextView
        android:id="@+id/labelTV"
        android:layoutWeight="1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="A " />

    <Button
        android:id="@+id/button"
        android:layoutWeight="1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/labelTV" />
</LinearLayout>
int txtWidth = your_textViw.getWidth();
int btnWidth = your_button.getWidth();

if(txtWidth >= btnWidth)
  your_button.setWidth(txtWidth);