由于android中父级的LinearLayout wrap_content,TextView会切断行

时间:2012-06-08 19:22:43

标签: android xml android-layout android-linearlayout

我想做的是制作一个包含一些文本模糊的中心框和一个按钮来继续。我能够通过使用wrap_content使盒子居中并且不占用整个屏幕,但是blurbs有几行长,并且包含它们的textview没有显示所有文本。这就是我所拥有的:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:background="@color/background"
    android:orientation="vertical" >


    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="center"
        android:background="@color/content"
        android:padding="10dp"
     >

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="center"
            android:text="@string/title"
            android:textColor="@color/black" />

       <TextView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="@string/teacher_head" 
            android:textColor="@color/black" />

        <TextView
            style="@style/home_blurb"
        android:text="@string/teacher_blurb" />

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:text="@string/student_head"
            android:textColor="@color/black"  />

        <TextView
        android:text="@string/student_blurb" 
            style="@style/home_blurb" />


        <Button
            android:layout_width="wrap_content"
        android:layout_height="0dip"
        android:layout_gravity="center"
        android:layout_weight="0.1"
        android:gravity="center"
            android:paddingTop="5dp"
            android:text="@string/go_to_app" />


</LinearLayout>
</LinearLayout>

其中home_blurb是

<style name="home_blurb" parent="android:TextAppearance">
    <item name="android:paddingBottom">5dp</item>
    <item name="android:textColor">@color/black</item>
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">fill_parent</item>
    <item name="android:layout_weight">1</item>
    <item name="android:textSize">12dp</item>     
</style>

内部LinearLayout将自己设置为按钮的宽度,我没关系,但有没有办法让它足够宽以包含所有文本而不设置特定的像素测量值(如html / css中的屏幕百分比) )?

2 个答案:

答案 0 :(得分:1)

我有同样的问题。发生我正在使用:

android:layout_gravity="center"

不要使用它。使用:

android:gravity="center"

代替。也许你应该在正被切断的TextView上使用android:gravity =“center”。

一些帮助:

android:layout_gravity是View的外部引力。这意味着,要指定视图应触及其父级边框的方向。

android:gravity是该视图的内部重力。这意味着,它的内容应该朝哪个方向对齐。

答案 1 :(得分:0)

您可以在第二个LinearLayout

中使用
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="20dp"
android:layout_marginTop="20dp"

这样无论你的文字有多大,你的布局都会保持在中心,每次都有一些空间。

如果你想要你可以通过为每个元素添加特定的最大高度来为每个元素添加滚动条,那么你可以这样做

android:scrollbars="vertical"和代码textview.setMovementMethod(new ScrollingMovementMethod());