4

我有RelativeLayout一个按钮,下面有一个文本。我想根据按钮文本对齐文本,即它从左侧开始的宽度与按钮文本相同。

我尝试使用android:layout_alignLeft="@id/myButton",但它与按钮的边缘对齐,而不是按钮文本的边缘。

有没有办法可以做到这一点?

在我的 XML 布局中,按钮和文本如下所示:

<Button
    android:id="@+id/myButton"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="16dp"
    android:layout_marginLeft="16dp"
    android:text="Some text" />

<TextView
    android:id="@+id/myTextView"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignLeft="@id/myButton"
    android:layout_below="@id/myButton"
    android:layout_marginTop="16dp"
    android:layout_marginLeft="16dp"
    android:text="Some text"
    android:textAppearance="?android:attr/textAppearanceMedium" />
4

4 回答 4

1

请将此字段android:gravity="center"用于您的 textview 内容。你会得到相同的..它的工作正常..请使用这个

于 2013-10-19T04:59:19.340 回答
0

您必须从您的代码中以编程方式执行此操作。代码如下。

RelativeLayout.LayoutParams rParams = ((TextView)findViewById(R.id.myTextView)).getLayoutParams();
rParams.addRule(RelativeLayout.ALIGN_LEFT, R.id.myButton); // Or you can also add other rules like -- RelativeLayout.ALIGN_BASELINE or whatever you want to do. Check our Relative layout API docs.
((TextView)findViewById(R.id.myTextView)).setLayoutParams(rParams);

您还可以获得边距和填充以及文本对齐方式,例如..

((TextView))findViewById(R.id.myTextView)).setTextAlignment((Button))findViewById(R.id.myButton).getTextAlignment));

// 上面的替代代码

myTextView.setTextAlignment(myButton.getTextAlignment());

边距和填充也是如此。

于 2013-10-19T10:56:22.723 回答
0

不知道我会如何在 XML 中做到这一点,但我会以编程方式尝试

myTextView.setPadding(myButton.getPaddingLeft(),0,0,0)

编辑:或者,呃,你可以在 xml 中设置按钮和 textview 的填充

于 2013-10-18T14:14:33.533 回答
0

如果您使用 Java 代码会怎样:

TextView txt = (TextView) findViewById(R.id.myTextView);
Button btn = (Button) findViewById(R.id.myButton);

    txt.setPadding(10, 0, 0, 0);
    btn.setPadding(10, 0, 0, 0);
于 2013-10-18T14:17:24.793 回答