为什么我的第一个TextView不能容纳第二个TextView?

问题描述:

尝试在较小的屏幕尺寸上呈现以下RelativeLayout。在图形布局编辑器中,第二个TextView完全隐藏,但第一个完全展开,显示完整的文本内容。我知道TextViews应该是可滚动的。为什么我的第一个TextView不能容纳第二个TextView?

有什么方法可以使用RelativeLayout并给每个屏幕的相等部分,或者我应该只使用LinearLayout并使用layout_weight?从Android文档的指导,我的印象是,我应该避免使用LinearLayout而不是RelativeLayout

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/tv1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:fillViewport="true" 
     android:gravity="center" 
     android:text="Lorem ipsum dolor sit amet, onsectetur adipiscing elit. Curabitur molestie tempor ante non interdum. Nullam sit amet diam ligula. Suspendisse ultricies commodo felis in rutrum. Lorem ipsum dolor sit amet, onsectetur adipiscing elit. Curabitur molestie tempor ante non interdum. Nullam sit amet diam ligula. Suspendisse ultricies commodo felis in rutrum.Lorem ipsum dolor sit amet, onsectetur adipiscing elit. Curabitur molestie tempor ante non interdum. Nullam sit amet diam ligula. Suspendisse ultricies commodo felis in rutrum." 
     android:scrollbars="vertical" 
     android:maxlines="100" 
     android:textSize="22dp" > 
    </TextView> 

    <TextView 
     android:id="@+id/tv2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/tv1" 
     android:fillViewport="true" 
     android:gravity="center" 
     android:scrollbars="vertical" 
     android:maxlines="100" 
     android:text="Lorem ipsum dolor sit amet, onsectetur adipiscing elit. Curabitur molestie tempor ante non interdum. Nullam sit amet diam ligula. Suspendisse ultricies commodo felis in rutrum. Lorem ipsum dolor sit amet, onsectetur adipiscing elit. Curabitur molestie tempor ante non interdum. Nullam sit amet diam ligula. Suspendisse ultricies commodo felis in rutrum.Lorem ipsum dolor sit amet, onsectetur adipiscing elit. Curabitur molestie tempor ante non interdum. Nullam sit amet diam ligula. Suspendisse ultricies commodo felis in rutrum." 
     android:textSize="22dp" /> 
</RelativeLayout> 

既然你在第一TextView中使用“WRAP_CONTENT”,它填补所有可用空间,那么就没有留给第二TextView的空间。如果你希望两者都有,那么你可以把它们放在一个LinearLayout中,它们的权重相同,或者你可以在“layout_height”字段中指定一个特定的尺寸。 P.S.如果您希望它们在所有设备上都相同,那么LinearLayout是您最好的选择。你也可以在RelativeLayout中使用LinearLayout,以防你想添加任何相对于它们的小部件。

支持的方式,如果你可以这样称呼它,将使用LinearLayout和布局权重。有人在另一个答案有neat idea。创建一个不可见的视图,居中并在视图的两侧放置两个文本视图。

也就是说,它会总是是一个50/50分割,并且不会给您与布局权重一样多的灵活性(Shrink/Grow),但它取决于您的需要。