如何在android上设置等于另一个小部件的宽度

M.A*_*ali 37 android android-widget android-layout android-view

我需要在文本字段下面绘制一条水平线,使得线条的宽度等于文本宽度(而不是整个屏幕的宽度).

在我的应用程序中,我在视图下方有一个textview(水平线).的线视图的宽度应等于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" />
             ......
Run Code Online (Sandbox Code Playgroud)

屏幕的图像是:

在此输入图像描述

请帮我.

Jav*_*ave 90

如果使用a 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" />
Run Code Online (Sandbox Code Playgroud)

  • 为了更好地支持从右到左的布局,你还应该添加`android:layout_alignStart ="@ + id/textView1"`和`android:layout_alignEnd ="@ + id/textView1"` (4认同)

Arg*_*us9 6

如果您使用的是除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>
Run Code Online (Sandbox Code Playgroud)

请注意,两个文本字段都设置为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());
Run Code Online (Sandbox Code Playgroud)

如果您有多个小部件要具有统一的宽度,只需重复上述代码即可获得新元素.例如,假设有一个按钮我想调整宽度,以匹配其他元素:

if(tv2.getWidth() < button)
    tv2.setWidth(button.getWidth());
else
    button.setWidth(tv2.getWidth());
Run Code Online (Sandbox Code Playgroud)