我有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" />
答案 0 :(得分:1)
请在您的textview内容中使用此字段 android:gravity =“center”。你会得到相同的..它工作正常..请使用此
答案 1 :(得分:0)
我不确定如何在XML中执行此操作,但我会以编程方式尝试
myTextView.setPadding(myButton.getPaddingLeft(),0,0,0)
编辑:或者,或者,你可以在xml中设置按钮和textview的填充
答案 2 :(得分: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);
答案 3 :(得分: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());
与边距和填充相同。