第一个TextView重叠第二个,Android

时间:2014-08-30 16:04:32

标签: android textview overlapping

我有两个TextViews我需要水平并排,比如类别+类别的产品数量。代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="15dp"
    android:paddingBottom ="10dp"
    android:background="@color/navigation_background_sub">


   <TextView

        android:id="@+id/category_name_second"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="22sp"
        android:textColor="@color/ebuy_color_navigation_name" />

    <TextView
        android:layout_toRightOf="@+id/category_name_second"
        android:paddingLeft="7dp"

        android:id="@+id/category_number_second"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="22sp"
        android:textColor="@color/ebuy_color_navigation_number" />

</RelativeLayout>

现在的问题是,一旦第一个TextView的文本变长,第二个的空间就会很小,文本会显示在两行以上。

我没有发布图片的声誉,所以我只是想解释如下:

它是怎么回事:

笔记本电脑(34)

计算机软件(1

               4                    
               )

应该如何:

笔记本电脑(34)

电脑(14)

软件

4 个答案:

答案 0 :(得分:0)

使用

layout_toRightOf= "@id/category_name_second"

它可能对你有帮助

答案 1 :(得分:0)

如果您将RelativeLayout替换为水平LineraLayout,则可用空间将在文本视图中均匀分配。您可以添加weight属性来控制每行TextView中的一部分。

答案 2 :(得分:0)

嗯,问题是你在水平线上没有足够的空间,这就是文本视图显示更多线条的原因。

您必须为每个Textview定义所需的空间。如果您的布局如此简单,您可以选择线性布局以更好地对齐文本视图。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="10dp"
    android:paddingLeft="15dp"
    android:weightSum="1" >

    <TextView
        android:id="@+id/category_name_second"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.7"
        android:text="Computers"
        android:textSize="22sp"
        android:singleLine="true"
        android:textColor="@color/ebuy_color_navigation_name" />

    <TextView
        android:id="@+id/category_number_second"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="0.3"
        android:paddingLeft="7dp"
        android:text="(24)"
        android:textSize="22sp"
        android:singleLine="true"
        android:textColor="@color/ebuy_color_navigation_number" />

</LinearLayout>

您还必须添加属性 singleLine ,以避免textview显示更多行。如您所见,使用权重可以为水平线中的每个组件设置比例宽度。

答案 3 :(得分:0)

在TextView中当你使用wrap_content时,android设备会根据你输入的数据(文本长度)调整它的宽度和高度(如果你使用wrap_content作为高度)。如果文本未在textview中修复,则不要使用wrap_content(仅当您不希望该文本自动写入第二行时)。因此,如果第一个Textview占用的空间超过一半,则第二个textview必须调整其高度以显示完整text.There没有永久的解决方案,因为这个文本行取决于设备的大小。如果设备的屏幕较大,以便在单行中显示两个textview,它将显示给你,除非它会增加你的情况下第二个textview的高度。

您还可以为所有类型的屏幕尺寸制作不同的布局,并根据它设置文本的大小。您可以check支持多种屏幕尺寸。