2017-09-25 52 views
0

我想做一個android應用程序的chatview,但我有一個擠壓消息時間的聊天泡泡的問題,直到它完全崩潰它,然後它包裹到下一行。 這是XML:一個TextView擠出另一個時,它擴大而不是包裝

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/root" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_marginBottom="4dp" 
android:layout_marginTop="4dp"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="left|center" 
    android:orientation="horizontal" 
    android:weightSum="1"> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.8" 
     android:gravity="left|center" 
     android:orientation="horizontal"> 

     <TextView 
      android:id="@+id/content" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/chat_levi" 
      android:padding="10dp" 
      android:text="Insert text here" 
      android:textColor="@color/blueGray50" 
      android:textSize="16sp" /> 

     <TextView 
      android:id="@+id/time" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:gravity="bottom|left" 
      android:text="18:30" 
      android:textSize="14sp" /> 

    </LinearLayout> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_weight="0.2" /> 

</LinearLayout> 

和圖像向您展示它的樣子: enter image description here

這是個什麼樣子,當包裝,如: enter image description here

我還爲聊天室中的其他用戶設置了另一個佈局,對他而言,我剛剛將所有重力式左變更爲權限,並將某些元素的位置如上圖所示(它非常類似的代碼,所以我排除了它,但如果有人問它,我會加上它)。對於那個,我得到了預期的效果。

enter image description here

是否有某種修復來獲得的第一個表現方式與鏡像同一個?

+1

您可以添加proprety「機器人:MAXLINES:「1 「」。這將允許您的TextView只有一行 –

+0

這只是使TextView的時間不會將其文本壓縮到下一行,然後它被擠出。 –

+0

爲什麼你不給時間一個固定的寬度? – Journey

回答

0

我想出了一個解決方案。因爲鏡像的鏡頭能夠完美地工作,所以我最終鏡像了android:scaleX="-1"的(鏡像鏡頭的)的RelativeLayout,之後我在TextView元素上使用了android:scaleX="-1"

下面是代碼:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/root" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_marginBottom="4dp" 
android:layout_marginTop="4dp" 
android:scaleX="-1"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="right|center" 
    android:orientation="horizontal" 
    android:weightSum="1"> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_weight="0.2" /> 

    <LinearLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.8" 
     android:gravity="right|center" 
     android:orientation="horizontal"> 

     <TextView 
      android:id="@+id/time" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:gravity="bottom|right" 
      android:scaleX="-1" 
      android:text="18:30" 
      android:textSize="14sp" /> 

     <TextView 
      android:id="@+id/content" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:background="@drawable/chat_levi" 
      android:padding="10dp" 
      android:scaleX="-1" 
      android:text="Insert text here" 
      android:textColor="@color/blueGray50" 
      android:textSize="16sp" /> 

    </LinearLayout> 

</LinearLayout> 

而最終的結果:

enter image description here

enter image description here

0

試試下面的代碼:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/root" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="4dp" 
    android:layout_marginTop="4dp"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="left|center" 
     android:orientation="horizontal"> 

     <FrameLayout 
      android:layout_weight="0.8" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content"> 
      <TextView 
       android:id="@+id/content" 
       android:layout_height="wrap_content" 
       android:background="@drawable/chat_levi" 
       android:padding="10dp" 
       android:layout_width="wrap_content" 
       android:text="Insert texaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaat here" 
       android:textColor="@color/blueGray50" 

       android:textSize="16sp" /> 
     </FrameLayout> 


     <TextView 
      android:id="@+id/time" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:gravity="bottom|left" 
      android:text="18:30" 
      android:textSize="14sp" /> 
     <View 
      android:layout_width="0dp" 
      android:layout_height="0dp" 
      android:layout_weight="0.2" /> 
    </LinearLayout> 
</RelativeLayout> 

UPD:到底間隔固定

+0

這不起作用。文本仍然被擠掉,我最終需要空間。 –

+0

請檢查更新的代碼,我錯過了編輯文件的版本。但是,這是解決方法,我建議使用ConstraintLayout來避免嵌套視圖。 –

+0

通過該代碼,最終得到的間隔視圖被擠出。 –

0

大概有一百萬的方式對皮膚這隻貓,但你已經在使用權做你的線性佈局,你可以做一些非常相似你textviews:

<TextView 
      android:id="@+id/content" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="4" 
      android:padding="10dp" 
      android:text="Insert ioadjfojdajidijfaseidfijoajsdifjasdijfijsadpfaosdjiofipasjdifapsjdfjasdjfasidjfasdjfoipjoijoij here" 
      android:textSize="16sp" /> 

     <TextView 
      android:id="@+id/time" 
      android:layout_width="0dp" 
      android:layout_weight="1" 
      android:layout_height="match_parent" 
      android:gravity="bottom|left" 
      android:text="18:30" 
      android:textSize="14sp" /> 

你可以亂用權給予更多或更少的空間到你的時間戳。

編輯******

只是把maxwidth上的XML,以便皮膚這隻貓然後是另一種方式

<TextView 
      android:id="@+id/content" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="10dp" 
      android:maxWidth="250dp" 
      android:text="Insert ijpoijiopjiopjiopjiopsdjfaisdjfipajsdifajsdifaisdfaidspjfipajdf here" 

      android:textSize="16sp" /> 

你將不得不去管理它爲不同的佈局,雖然。

+0

當我用泡泡給TextView添加一個權重時,泡泡會自動延伸以佔據它的重量。我想讓泡泡(背景)環繞文字。我希望有時間的人有一個固定的大小,不要推掉。 –

+0

我知道它可以用最大寬度進行操作,但是我在那裏放鬆了很多自由。鏡像的代碼使用幾乎相同的代碼,並且針對所有內容進行了優化。 –

相關問題