2014-06-23 79 views
1

我需要將我的消息和時間與屏幕中心對齊。 我的代碼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

我試圖設置android:ellipsize="none"爲第二TextView的

enter image description here

現在我們看到的裁剪文本「TIME」 - 沒有「E」字符

我想看看包裹第一的TextView不裁剪第二的TextView與定位既中心。

enter image description here

+0

在線性佈局中使用權重。 – Shivansh

回答

1

我建議你使用RelativeLayout而不是LinearLayout。然後,給layout_alignParentLeft作爲真實的消息TextView的,並且layout_alignParentRight因爲真正到了時間TextView的,就像這樣:

<?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

+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> 
0

嘗試切換您的留言的TextView擁有的0dp的寬度和1的權重,這樣其寬度將被設置爲留下的剩餘空間測量了TextView的時間之後。如果這不起作用,請嘗試將包含的佈局切換到RelativeLayout並適當地定位內部TextView(對於Time TextView使用alignParentRight =「true」,並在Message TextView上使用layout_toLeftOf =「@ + id/tvTime」)。

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> 
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>