2014-10-20 68 views
0

讓我們來看看下面的佈局:裹的TextView

example

現在讓我們做一些限制:

  • 的TextView必須對準左
  • 圖片必須與左邊的textView文本對齊
  • CheckBox必須與右邊對齊
  • TextView的可能是2行以上(可能是一個很長的文本或短的一個)

所以我想它的運行方式是,只要文本是足夠短的剩餘空間會圖像和複選框之間。

但是,如果文字足夠長,我只需要textView分成兩行,即 ,因爲它足夠長,圖像將被推入,直到它也與複選框對齊。 (但它仍然對齊textView ...)

如果我使用LinearLayout我必須製作寬度爲0和重量爲1的textView,以便在沒有更多空間時進行拆分,但是在這種情況下圖像將不會與textView的文字對齊....

所以我需要在圖像和複選框之間加上一些間隔以及重量,但是它會破壞textView的重量。

一個相對佈局不會讓TextView的知道什麼時候是時候拆....

爲TextView的硬編碼的寬度將不發揮好爲好,因爲圖像不會被對齊文本,而不同的設備有不同的寬度。

帶有drawableRight的textView不起作用。

任何想法我怎麼能實現這種行爲?

+0

你必須使用重量和線性佈局,以實現它並設置寬度和重量根據您的需要也對齊元素。它會正常工作.. – Umair 2014-10-20 12:47:06

回答

1

試試這種方式,希望這會幫助你解決你的問題。

設置你形象的TextView的右抽拉

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <CheckBox 
     android:id="@+id/checkbox" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true"/> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@id/checkbox" 
     android:gravity="left"> 
     <TextView 
      android:id="@+id/textview" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:drawableRight="@drawable/ic_launcher" // here set you image 
      android:text="android demo text"/> 

    </LinearLayout> 
</RelativeLayout> 
+0

不錯! ,你可以改變linearLayout爲frameLayout。 Tnx! – ndori 2014-10-20 13:41:08

+0

很高興幫助你... – 2014-10-20 14:57:33

0

嘗試這樣可以幫助你,

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:baselineAligned="false" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

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

       <TextView 
      android:id="@+id/textview" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:drawableRight="@drawable/ic_launcher" 
      android:text="android demo text"/> 
     </LinearLayout> 

     <LinearLayout 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="15" 
      android:gravity="center|right" 
      android:orientation="vertical" > 

      <CheckBox 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" /> 
     </LinearLayout> 

    </LinearLayout> 
+0

在這個解決方案中,尺寸不是動態的,因爲複選框總是會佔用一定的空間(因爲15個重量),所以包裹的文本只能增長到85個重量,並且可能會有很大的空間左.. 認爲一個巨大的平板電腦,並有很多文字,線路將中斷,仍然會有很多空間留下線。另一方面,如果checkBox在一個小設備上足夠大,它可能會比線的15重量大,所以它不會正確顯示 – ndori 2014-10-20 13:05:48