我有两个字符串资源。但是我不知道两个字符串中的哪一个会产生更宽的TextView。我想创建两个TextView,一个在另一个上面,一个使用第一个资源的文本,另一个使用第二个资源的文本。我希望TextViews的宽度相同,但不要超过必要的范围。
我能做到这一点。我使用的布局资源看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/green_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:gravity="center"
android:textSize="18sp"
android:padding="5dp"
android:background="@android:color/white"
android:textColor="@android:color/holo_green_dark"
android:text="@string/green_text"
/>
<TextView
android:id="@+id/blue_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/green_text_view"
android:layout_alignLeft="@id/green_text_view"
android:gravity="center"
android:textSize="18sp"
android:padding="5dp"
android:background="@android:color/white"
android:textColor="@android:color/holo_blue_dark"
android:text="@string/blue_text"
/>
</RelativeLayout>
并使用以下代码在onCreate()中使宽度匹配:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView greenTextView = (TextView) findViewById(R.id.green_text_view);
TextView blueTextView = (TextView) findViewById(R.id.blue_text_view);
greenTextView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
blueTextView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
int maxWidth = Math.max(greenTextView.getMeasuredWidth(), blueTextView.getMeasuredWidth());
greenTextView.setWidth(maxWidth);
blueTextView.setWidth(maxWidth);
}
有效。无论TextView自然更宽,TextView都会对齐并居中。
我的问题:是否可以单独使用xml?任何帮助将不胜感激。
答案 0 :(得分:1)
这似乎不可能。由于你不知道哪一个会自然地变宽,RelativeLayout
(和你)无法分辨两者之间的依赖关系。如果您不小心使用layout_align*
属性将较宽的视图B
与正常视图对齐,则B
的内容将被剪切。
答案 1 :(得分:0)
你可以尝试
android:layout_alignRight="@+id/green_text_view"
android:layout_alignLeft="@+id/green_text_view"
我还没有测试过它
答案 2 :(得分:0)
Change the layout_width of RelativeLayout to wrap_content
Change the layout_width of second textview to match_parent
如果您的第二个textView内容小于第一个,则此方法非常正常。检查here以获得更好的解决方案。