如何设置等于另一个部件的宽度android
我需要在文本字段下方画一条水平线,以便线的宽度等于文本宽度(而不是全屏的宽度)。如何设置等于另一个部件的宽度android
在我的应用程序中,我有一个视图(水平线)下面的textview。 线宽视图应该等于宽度的文本视图。 我试过android:layout_width =“wrap_content”和“match_parent”,它不能解决问题。
这是XML编码样本:屏幕
......
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="28dp"
android:text="PopUpWindow"
android:textAppearance="?android:attr/textAppearanceLarge" />
<View
android:id="@+id/separator"
android:layout_width="wrap_content"
android:layout_height="0.3dp"
android:layout_below="@+id/textView1"
android:background="#ffffff" />
......
形象是:
请帮助我。
如果使用RelativeLayout
你可以使用align
-attributes:
<View
android:id="@+id/separator"
android:layout_width="0dp"
android:layout_height="0.3dp"
android:layout_below="@+id/textView1"
android:layout_alignLeft="@+id/textView1"
android:layout_alignRight="@+id/textView1"
android:background="#ffffff" />
谢谢解决。 – 2012-04-02 13:59:54
正确,因为它是最简单的:) – lazyguy 2014-07-24 18:40:00
保存我的整个一天,谢谢:) – themarketka 2014-09-12 12:47:55
这取决于你的使用情况。如果您打算动态修改布局中的东西,并让它们的大小与TextView相同,则可能需要将它们一起包装在父视图中。如果这是一次性事物,请按照其他答案中的建议使用RelativeLayout。
<LinearLayout android:orientation="vertical" ... > <!-- layout parameters as appropriate-->
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="28dp"
android:text="PopUpWindow"
android:textAppearance="?android:attr/textAppearanceLarge" />
<View
android:id="@+id/separator"
android:layout_width="match_parent"
android:layout_height="0.3dp"
android:layout_below="@+id/textView1"
android:background="#ffffff" />
</LinearLayout>
使用以下宽度属性。
<TextView
android:id="@+id/textView1"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="28dp"
android:text="PopUpWindow"
android:textAppearance="?android:attr/textAppearanceLarge" />
<View
android:id="@+id/separator"
android:layout_width="150dp"
android:layout_height="0.3dp"
android:layout_below="@+id/textView1"
android:background="#ffffff" />
使用的RelativeLayout和水平线视图
android:layout_alignLeft="@+id/textView1" android:layout_alignRight="@+id/textView1"
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1.23" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="67dp"
android:text="this is TextView" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="10dp"
android:layout_alignLeft="@+id/textView1"
android:layout_alignRight="@+id/textView1"
android:layout_below="@+id/textView1"
android:background="#FF0000"
android:text="" />
</RelativeLayout>
不错的工作... – Avi 2014-11-10 06:39:53
使用这两个属性,如果您使用的是一个RelativeLayout的其他布局,您可以通过编程匹配您的小部件的宽度,如这个例子:
layout.xml:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Here's some text"
/>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Some more text"
/>
</LinearLayout>
当然b其他文本字段都设置为wrap_content。
Main.java:
TextView tv1 = (TextView) findViewById(R.id.text1);
TextView tv2 = (TextView) findViewById(R.id.text2);
if(tv1.getWidth() < tv2.getWidth())
tv1.setWidth(tv2.getWidth());
else
tv2.setWidth(tv1.getWidth());
如果你有,你希望有一个统一的宽度多个小工具,只需重复上面的代码新元素。例如,假设有一个按钮,我想调整宽度,以匹配其他元素:
if(tv2.getWidth() < button)
tv2.setWidth(button.getWidth());
else
button.setWidth(tv2.getWidth());
感谢您的命令,我会检查并让你知道。 – 2013-05-14 08:51:13
试一试,让我知道。它为我工作,所以它也应该为你工作。我相信它也应该执行命令,如果您的用户旋转他们的设备方向,那么无论他们如何使用他们的设备,您的视图看起来都会很棒。 – Argus9 2013-05-14 16:35:35
java的说,什么是正确的 - 如果你不使用RelativeLayout
和最简单的,但什么包含View的?
如果您在onCreate()中自定义UI,那么您会发现从另一个小部件获取宽度会给您一个错误的结果!这是因为UI尚未设置。
但是,您仍然可以在onCreate中设置您的UI ...只需运行UI设置后执行的代码即可。这是通过使用View.post()
命令实现的。
的XML:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center">
<Button
android:id="@+id/button_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="short string" />
<Button
android:id="@+id/button_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="this is a longer string" />
</LinearLayout>
</RelativeLayout>
Java代码:
private Button mButtonOne;
private Button mButtonTwo;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// inflate UI
setContentView(R.layout.activity_example);
// get references to UI elements
mButtonOne = (Button)findViewById(R.id.button_one);
mButtonTwo = (Button)findViewById(R.id.button_two);
// Make buttons the same size (i.e. Button1.width = Button2.width)
if ((mButtonOne != null) && (mButtonTwo != null))
{
mButtonOne.post(new Runnable()
{
@Override
public void run()
{
mButtonOne.setWidth(mButtonTwo.getWidth());
}
});
}
}
结果是,button_one
宽度将匹配button_two
的宽度。当两个视图的文本数量相差很大时,这会更好看一些。
如果你不想使用RelativeLayout,那么你可以设置父级的宽度来包装内容,父级的宽度将等于最大的子级。然后,您可以将小孩的宽度设置为match_parent,并匹配所需视图的宽度。
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical|left"
android:orientation="vertical"
android:layout_gravity="center_vertical"
android:padding="5dp">
<TextView
android:id="@+id/navHeaderName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/profile_progress_bar"
android:text="This is a large text"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<ProgressBar
android:id="@id/profile_progress_bar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="45" />
</LinearLayout>
你可以通过它的'LayoutParams'以编程方式获得你的textview的宽度,然后使用'LayoutParams'将这个宽度应用到你的水平线上。你会发现*很多例子用于在Java中设置宽度。 – 2012-04-02 13:54:39