Android - TextView推高了Imageview

时间:2016-04-20 10:56:03

标签: android android-layout textview imageview android-xml

我有一些线性布局,其中包含一些带有图像的文本。一切都很好,直到我的文字由于缺乏空间而分成2行。 我的图片被文字推高了,我想避免,但我无法实现。

这是我的XML代码:

<?xml version="1.0" encoding="utf-8"?>

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

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/imagen_entorno"
        android:layout_width="match_parent"
        android:layout_height="170dp"
        android:orientation="vertical"
        android:background="@android:color/black">
    </LinearLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#123456"
        android:layout_gravity="center"
        android:layout_below="@id/imagen_entorno"
        android:overScrollMode="never"
        android:paddingBottom="75dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:id="@+id/linearRoot"
            android:layout_marginTop="12dp"
            >

            <LinearLayout
                android:id="@+id/linear1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:weightSum="3"
                android:orientation="horizontal"
                android:gravity="center_vertical"
                android:layout_gravity="center"
                android:layout_marginBottom="5dp">
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton1"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="@dimen/botones_sonidos"
                        android:layout_weight="1"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Pajaro"
                        android:layout_gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton2"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="@dimen/botones_sonidos"
                        android:layout_weight="1"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Pajaro"
                        android:layout_gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton3"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="@dimen/botones_sonidos"
                        android:layout_weight="1"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Pajaro"
                        android:layout_gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>
            </LinearLayout>
            <LinearLayout
            android:id="@+id/linear2"
            android:layout_below="@id/linear1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:weightSum="3"
            android:orientation="horizontal"
            android:gravity="center_vertical"
            android:layout_gravity="center">
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical">
                <ImageButton
                    android:id="@+id/boton4"
                    android:layout_width="@dimen/botones_sonidos"
                    android:layout_height="@dimen/botones_sonidos"
                    android:layout_weight="1"
                    android:layout_marginBottom="2dp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    />
                <TextView
                    android:id="@+id/tituloSonido4"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Pajaro mas largo aun"
                    android:singleLine="false"
                    android:lines="2"
                    android:layout_below="@id/boton4"
                    android:gravity="center"
                    android:textColor="@color/white"
                    fontPath="fonts/helveticalight.ttf"
                    tools:ignore="MissingPrefix"/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical">
                <ImageButton
                    android:id="@+id/boton5"
                    android:layout_width="@dimen/botones_sonidos"
                    android:layout_height="@dimen/botones_sonidos"
                    android:layout_weight="1"
                    android:layout_marginBottom="2dp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    />
                <TextView
                    android:id="@+id/tituloSonido5"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Pajaro"
                    android:gravity="center"
                    android:textColor="@color/white"
                    fontPath="fonts/helveticalight.ttf"
                    tools:ignore="MissingPrefix"/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical">
                <ImageButton
                    android:id="@+id/boton6"
                    android:layout_width="@dimen/botones_sonidos"
                    android:layout_height="@dimen/botones_sonidos"
                    android:layout_weight="1"
                    android:layout_marginBottom="2dp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    />
                <TextView
                    android:id="@+id/tituloSonido6"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Pajaro"
                    android:gravity="center"
                    android:textColor="@color/white"
                    fontPath="fonts/helveticalight.ttf"
                    tools:ignore="MissingPrefix"/>
            </LinearLayout>
        </LinearLayout>
            <LinearLayout
                android:id="@+id/linear3"
                android:layout_below="@id/linear1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:weightSum="3"
                android:orientation="horizontal"
                android:gravity="center_vertical"
                android:layout_gravity="center">
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton7"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="@dimen/botones_sonidos"
                        android:layout_weight="1"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido7"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Pajaro"
                        android:singleLine="false"
                        android:lines="2"
                        android:layout_below="@id/boton4"
                        android:gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton8"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="@dimen/botones_sonidos"
                        android:layout_weight="1"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido8"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Pajaro"
                        android:gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton9"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="@dimen/botones_sonidos"
                        android:layout_weight="1"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido9"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Pajaro"
                        android:gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

问题的屏幕截图:

enter image description here

任何提示都表示赞赏:)

6 个答案:

答案 0 :(得分:2)

使用的视图太多,使用GridView,此链接可以为您提供帮助。

答案 1 :(得分:1)

如果textView中的任何一个因为空间不足而可能会掉落到两行,而不是将每个textView的高度设置行固定为2并应用重心。它将保留与高度相关的所有文本视图。

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lines="2"
        android:text="test"
        android:gravity="center"/>

答案 2 :(得分:1)

通过文字提升我的图片的解决方案是通过设置TextView确定所有 layout_height的高度

android:layout_height="30dp"

或设置lines

android:lines="1" // or 2,3 ....

如果您只想将图像分割成2行或更多行时将图像保持在原位。你需要使用GridView

答案 3 :(得分:1)

<LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    weight_sum="4"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton2"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="0dp"
                        android:layout_weight="3"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido2"
                        android:layout_width="wrap_content"
                        android:layout_height="0dp"
                        android:layout_weight="1"
                        android:text="Pajaro"
                        android:layout_gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>

避免使用wrap_content来获取修复大小视图。你可以将一个weight_sum属性添加到LinearLayout并为例子4分配一个值。也可以将layout_weight属性添加到子视图中。对于imaveView分配3,为textview分配1,imageview总是比textview大3倍,textview不能侵入imagevies的空间。 ofc你可以为它们分配不同的值,以获得你想要的不同大小的视图。

答案 4 :(得分:1)

替换你的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:id="@+id/imagen_entorno"
        android:layout_width="match_parent"
        android:layout_height="170dp"
        android:orientation="vertical"
        android:background="@android:color/black">
    </LinearLayout>

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#123456"
        android:layout_gravity="center"
        android:layout_below="@id/imagen_entorno"
        android:overScrollMode="never"
        android:paddingBottom="75dp">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:id="@+id/linearRoot"
            android:layout_marginTop="12dp"
            >

            <LinearLayout
                android:id="@+id/linear1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:weightSum="3"
                android:orientation="horizontal"
                android:gravity="center_vertical"
                android:layout_gravity="center"
                android:layout_marginBottom="5dp">
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="top"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton1"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="@dimen/botones_sonidos"
                        android:layout_weight="1"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido1"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Pajaro"
                        android:layout_gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="top"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton2"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="@dimen/botones_sonidos"
                        android:layout_weight="1"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido2"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Pajaro"
                        android:layout_gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton3"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="@dimen/botones_sonidos"
                        android:layout_gravity="top"
                        android:layout_weight="1"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido3"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Pajaro"
                        android:layout_gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>
            </LinearLayout>
            <LinearLayout
            android:id="@+id/linear2"
            android:layout_below="@id/linear1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:weightSum="3"
            android:orientation="horizontal"
            android:gravity="center_vertical"
            android:layout_gravity="center">
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="top"
                android:orientation="vertical">
                <ImageButton
                    android:id="@+id/boton4"
                    android:layout_width="@dimen/botones_sonidos"
                    android:layout_height="@dimen/botones_sonidos"
                    android:layout_weight="1"
                    android:layout_marginBottom="2dp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    />
                <TextView
                    android:id="@+id/tituloSonido4"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Pajaro mas largo aun"
                    android:singleLine="false"
                    android:lines="2"
                    android:layout_below="@id/boton4"
                    android:gravity="center"
                    android:textColor="@color/white"
                    fontPath="fonts/helveticalight.ttf"
                    tools:ignore="MissingPrefix"/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="top"
                android:orientation="vertical">
                <ImageButton
                    android:id="@+id/boton5"
                    android:layout_width="@dimen/botones_sonidos"
                    android:layout_height="@dimen/botones_sonidos"
                    android:layout_weight="1"
                    android:layout_marginBottom="2dp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    />
                <TextView
                    android:id="@+id/tituloSonido5"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Pajaro"
                    android:gravity="center"
                    android:textColor="@color/white"
                    fontPath="fonts/helveticalight.ttf"
                    tools:ignore="MissingPrefix"/>
            </LinearLayout>
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="top"
                android:orientation="vertical">
                <ImageButton
                    android:id="@+id/boton6"
                    android:layout_width="@dimen/botones_sonidos"
                    android:layout_height="@dimen/botones_sonidos"
                    android:layout_weight="1"
                    android:layout_marginBottom="2dp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    />
                <TextView
                    android:id="@+id/tituloSonido6"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Pajaro"
                    android:gravity="center"
                    android:textColor="@color/white"
                    fontPath="fonts/helveticalight.ttf"
                    tools:ignore="MissingPrefix"/>
            </LinearLayout>
        </LinearLayout>
            <LinearLayout
                android:id="@+id/linear3"
                android:layout_below="@id/linear1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:weightSum="3"
                android:orientation="horizontal"
                android:gravity="center_vertical"
                android:layout_gravity="center">
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton7"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="@dimen/botones_sonidos"
                        android:layout_weight="1"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido7"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Pajaro"
                        android:singleLine="false"
                        android:lines="2"
                        android:layout_below="@id/boton4"
                        android:gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton8"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="@dimen/botones_sonidos"
                        android:layout_weight="1"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido8"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Pajaro"
                        android:gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <ImageButton
                        android:id="@+id/boton9"
                        android:layout_width="@dimen/botones_sonidos"
                        android:layout_height="@dimen/botones_sonidos"
                        android:layout_weight="1"
                        android:layout_marginBottom="2dp"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        />
                    <TextView
                        android:id="@+id/tituloSonido9"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Pajaro"
                        android:gravity="center"
                        android:textColor="@color/white"
                        fontPath="fonts/helveticalight.ttf"
                        tools:ignore="MissingPrefix"/>
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

答案 5 :(得分:0)

只需固定TextView的高度:

<TextView
    android:id="@+id/tituloSonido3"
    android:layout_width="wrap_content"
    android:layout_height="48dp"
...    
/>

如果您只想要一行,则可以对其进行椭圆化并设置较小的尺寸。 如果你想要多个,你可以使用增加的高度。