LinearLayout中的中心对齐

时间:2014-06-23 05:54:14

标签: android android-layout alignment android-linearlayout

我需要将我的信息和时间与屏幕中心对齐。 我的代码

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingTop="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:gravity="center_horizontal">
    <TextView
    android:id="@+id/tvMessage"
    android:gravity="center_vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:autoLink="web|email"
    android:textSize="@dimen/system_msg_text_size"
    android:textColor="@android:color/darker_gray"
    android:text="MESSAGE"/>
<TextView
    android:id="@+id/tvTime"
    android:gravity="center_vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginRight="10dp"
    android:layout_marginLeft="5dp"
    android:text="TIME"
    android:singleLine="true"
    android:textSize="@dimen/system_msg_text_size"
    android:textColor="@android:color/darker_gray"/>
</LinearLayout>

我看到了

enter image description here

没关系

但是当消息更长时,我会看到ellipsize

enter image description here

我尝试为第二个TextView设置android:ellipsize="none"

enter image description here

现在我们看到裁剪的文字&#34; TIME&#34; - 没有&#39; E&#39;字符

我希望看到包装第一个TextView而不裁剪第二个TextView,并将其对齐到中心。

enter image description here

5 个答案:

答案 0 :(得分:2)

我希望这会有所帮助

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:orientation="horizontal"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:paddingTop="10dp"
    android:weightSum="2" >

    <TextView
        android:id="@+id/tvMessage"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:autoLink="web|email"
        android:gravity="center_vertical"
        android:text="MESSAGEasdas asdsadasdsadsadsadsad"
        android:textColor="@android:color/darker_gray" />

    <TextView
        android:id="@+id/tvTime"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="10dp"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:singleLine="true"
        android:text="TIME"
        android:textColor="@android:color/darker_gray" />

</LinearLayout>

答案 1 :(得分:1)

我建议您使用RelativeLayout而不是LinearLayout。然后,将layout_alignParentLeft设置为Message TextView,将layout_alignParentRight设置为Time TextView的true,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp" >

<TextView
    android:id="@+id/tvMessage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:autoLink="web|email"
    android:layout_alignParentLeft="true"
    android:layout_toLeftOf="@+id/tvTime"
    android:gravity="center_vertical"
    android:text="MESSAGE long long long long long long long long"
    android:textColor="@android:color/darker_gray"
    android:textSize="15sp" />

<TextView
    android:id="@+id/tvTime"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="10dp"
    android:gravity="center_vertical"
    android:text="TIME"
    android:textColor="@android:color/darker_gray"
    android:textSize="15sp" />
</RelativeLayout>

结果是:

enter image description here

答案 2 :(得分:0)

尝试将Message TextView切换为宽度为0dp且权重为1,以便在测量TextView时间后将其宽度设置为剩余的剩余空间。如果这不起作用,请尝试将包含的布局切换为RelativeLayout并适当地定位内部TextView(使用alignParentRight =&#34; true&#34;对于Time TextView和layout_toLeftOf =&#34; @ + id /电视时间&#34;在消息TextView上。)

答案 3 :(得分:0)

通常情况下 - 一旦提出问题,答案就会到来。在此之前我试着做了两天) 解决方案是使用RelativeLayout并将第一个TextView设置为左侧TextView,并将第二个TextView的对齐方式设置为父级右侧。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingTop="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:gravity="center_horizontal">
    <TextView
        android:id="@+id/tvMessage"
        android:gravity="center_vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:autoLink="web|email"
        android:textSize="@dimen/system_msg_text_size"
        android:textColor="@android:color/darker_gray"
        android:layout_toLeftOf="@+id/tvTime"
        android:text="MESSAGE hk jhg jhg hghgjhgghhhgjkh gjghg jhg j gjg j gjh"/>
    <TextView
        android:id="@+id/tvTime"
        android:gravity="center_vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:layout_marginLeft="5dp"
        android:text="TIME"
        android:singleLine="true"
        android:ellipsize="none"
        android:layout_alignParentRight="true"
        android:textSize="@dimen/system_msg_text_size"
        android:textColor="@android:color/darker_gray"/>

</RelativeLayout>

答案 4 :(得分:0)

试试这种方式,希望这可以帮助您解决问题。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingTop="10dp"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:gravity="center">

    <TextView
        android:id="@+id/tvMessage"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:autoLink="web|email"
        android:textColor="@android:color/darker_gray"
        android:text="MESSAGE long long long long long long long long"/>

    <TextView
        android:id="@+id/tvTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:layout_marginLeft="5dp"
        android:text="TIME"
        android:singleLine="true"
        android:textColor="@android:color/darker_gray"/>
</LinearLayout>