避免2 textview重叠

时间:2016-07-08 10:10:11

标签: android android-layout textview overlap

我在卡片中有两个Textview,用于设置标题和小时。到目前为止,一切都很完美,因为标题如此短暂,但现在,我有很长的头衔。

为避免卡片以标题展开,我设置了ellipse属性。

但问题是这两个文本视图是重叠的,我不知道如何解决它。

enter image description here

代码:

        <com.gc.materialdesign.views.Card
            android:id="@+id/jir_card_headerissue"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:id="@+id/jir_issue_name_tv"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_marginLeft="@dimen/inner_components_spacing"
                android:layout_marginTop="@dimen/activity_vertical_margin"
                android:ellipsize="end"
                android:singleLine="true"
                android:text="Crear nueva vista"
                android:textAppearance="?android:attr/textAppearanceLarge"/>

            <TextView
                android:id="@+id/jir_acc_time"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="@dimen/inner_components_spacing"
                android:layout_marginTop="@dimen/activity_vertical_margin"
                android:text="20h"
                android:textAppearance="?android:attr/textAppearanceSmall"/>

        </com.gc.materialdesign.views.Card>

用于Cardhttps://github.com/navasmdc/MaterialDesignLibrary

的库

4 个答案:

答案 0 :(得分:1)

您可以将2 TextView放入GroupLayout内以组织布局(例如水平LinearLayout

<com.gc.materialdesign.views.Card 
...>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<TextView
    android:id="@+id/jir_issue_name_tv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:layout_marginLeft="@dimen/inner_components_spacing"
    android:layout_marginTop="@dimen/activity_vertical_margin"
    android:ellipsize="end"
    android:singleLine="true"
    android:text="Crear nueva vista"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<TextView
    android:id="@+id/jir_acc_time"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true"
    android:layout_marginRight="@dimen/inner_components_spacing"
    android:layout_marginTop="@dimen/activity_vertical_margin"
    android:text="20h"
    android:textAppearance="?android:attr/textAppearanceSmall" />

</LinearLayout>
</com.gc.materialdesign.views.Card>

答案 1 :(得分:1)

您的Card似乎扩展了RelativeLayout - 您实际上正在利用android:layout_centerVerticalandroid:layout_alignParentRight这样的属性来利用这一点,因为他们不会在任何其他布局工作)。

您可以进一步使用它,并将长文本视图的约束添加到短文本视图的左侧。首先,您需要将短片移动到布局中的第一个,然后将这些属性添加到长片中:android:layout_toLeftOf="@id/jir_acc_time"android:layout_toStartOf="@id/jir_acc_time"android:layout_alignParentLeft="true"android:layout_alignParentStart="true"。完整的例子:

    <com.gc.materialdesign.views.Card
        android:id="@+id/jir_card_headerissue"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/jir_acc_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="@dimen/inner_components_spacing"
            android:layout_marginTop="@dimen/activity_vertical_margin"
            android:text="20h"
            android:textAppearance="?android:attr/textAppearanceSmall"/>

       <TextView
            android:id="@+id/jir_issue_name_tv"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="@dimen/inner_components_spacing"
            android:layout_marginTop="@dimen/activity_vertical_margin"
            android:layout_toLeftOf="@id/jir_acc_time"
            android:layout_toStartOf="@id/jir_acc_time"
            android:ellipsize="end"
            android:singleLine="true"
            android:text="Crear nueva vista"
            android:textAppearance="?android:attr/textAppearanceLarge"/>

    </com.gc.materialdesign.views.Card>

答案 2 :(得分:0)

如果您使用的是LinearLayout,则使用orientation Horizo​​ntal,否则您可能正在使用Relative Layout,然后将alignLeft设置为其他文本视图

答案 3 :(得分:0)

使用以下属性在TextViews中换行LinearLayout

<com.gc.materialdesign.views.Card>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

        <TextView
            android:id="@+id/jir_issue_name_tv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_marginLeft="@dimen/inner_components_spacing"
            android:layout_marginTop="@dimen/activity_vertical_margin"
            android:ellipsize="end"
            android:singleLine="true"
            android:text="Crear nueva vista"
            android:textAppearance="?android:attr/textAppearanceLarge"/>

        <TextView
            android:id="@+id/jir_acc_time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:layout_marginRight="@dimen/inner_components_spacing"
            android:layout_marginTop="@dimen/activity_vertical_margin"
            android:text="20h"
            android:textAppearance="?android:attr/textAppearanceSmall"/>

</LinearLayout>
</com.gc.materialdesign.views.Card>

第二个textview将占用所需空间来显示其文本,而第一个textview将填充剩余空间。