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);