2016-08-19 62 views
0

所以我目前正在研究Android上的一個應用程序,並且我遇到了有關RelativeLayout的特定問題,我無法找到解決方法。兩個視圖之間的Relativelayout位置視圖

我在佈局三個視圖如下:TextView的,TextView的和ImageView的(水平放置),這裏是IOS對應的截圖:

enter image description here

TextView的在中間應該堅持第一個,直到他到達Imageview時,他保持最小大小(包裝內容),而第一個Textview截斷。

在IOS上,我設置了約束的優先級來完成這個任務,但我無法弄清楚如何在Android上解決這個問題。

這裏是我的嘗試:

<android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:background="@drawable/daily_movie_title_box"> 

    <TextView 
    android:id="@+id/daily_header_textview" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 


    android:padding="15dp" 
    android:text="New Text aawi oa ioawfwi" 
    android:textSize="16sp" 

    android:textStyle="bold" 
    android:textColor="@color/white" 

    android:lines="1" 
    android:singleLine="true" 

    android:layout_alignParentStart="true" 
    /> 


    <TextView 
    android:id="@+id/duration_text" 
    android:text="138 mins" 
    android:layout_width="100dp" 
    android:layout_height="wrap_content" 
    android:textSize="13sp" 
    android:textColor="@color/white" 
    android:lines="1" 
    android:layout_alignBaseline="@id/daily_header_textview" 

    android:layout_toStartOf="@+id/certification_icon" 
    android:layout_toEndOf="@id/daily_header_textview" 

    /> 

    <ImageView 
    android:id="@id/certification_icon" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentEnd="true" 
    android:src="@drawable/uk12a" 
    android:layout_alignBottom="@id/daily_header_textview" 
    app:layout_aspectRatio="100%"/> 

</android.support.percent.PercentRelativeLayout> 

導致在這個(這就是我想要的):

enter image description here

但是,當我增加它不表現爲我的第一個TextView的文本慾望...

enter image description here

是否有可能在Android中實現我想要的行爲(保留中間的Textview包裝內容,並根據需要截斷第一個)?

我會發布更新,如果我最終找到解決方案,只是想看看是否有人可以找到一個簡單的方法來實現這種行爲,因爲我懷疑有。

謝謝。

+0

您可以嘗試將所有視圖的寬度設置爲「0dp」,然後使用屬性layout_weight,然後將其與每個視圖的百分比值(例如,第一視圖5,下一個2和最後一個視圖1)相關聯。不知道這是你在找什麼。 – TSGames

+0

在dp中爲第一個TextView定義一個固定的layout_width。 –

+0

但我希望第一個Textview的寬度是動態的,以包裝它的內容,除非沒有空間可用,在這種情況下截斷。 原因是我希望中間Textview在第一個結尾。 在當前場景中雖然中間文本截斷。 – Nadav96

回答

1

從我的理解,你想第一TextView要儘可能大,沒有如果文本的文本後添加空格太小。第二個TextView應該只有wrap_content,但它應該填充行佈局的其餘部分。 ImageView設置爲wrap_content

我用這個佈局進行了測試:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:shrinkColumns="0" 
     android:stretchColumns="1"> 

     <TableRow> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:singleLine="true" 
       android:text="Shrinking text dddddddddddddddddddddd"/> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Midle column"/> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:src="@mipmap/ic_launcher"/> 
     </TableRow> 

    </TableLayout> 

</LinearLayout> 

唯一的問題是,如果第二列有一個令人難以置信的大文本,這將推動其他視圖出父。但就你而言,我不認爲這會是一個問題。否則,我認爲它能完成這項工作。

+0

是的!似乎完全按照我的意願行事(你是對的,中間的文字不應該太長)。 謝謝:) – Nadav96

0

以下是一些建議的解決方案:

  • 您可以使用LinearLayout與水平方向和重量爲每個組件(TextViewsImageView)。
  • 您可以設置第二個TextView的最小和最大文本長度。

但我更喜歡應用第一種解決方案。您可以使用分配權重爲每個組件(在屏幕上的空間量):

android:layout_height 
+0

是的,我明白了,但使用第一種方法使第一個Textview的寬度爲靜態,無論其中的文本如何。 我想對齊中間的textview在第一個結尾,所以他們會看起來像他們在同一行。 我已經嘗試了第二種方法,但似乎佈局在設置其他約束(toStartOf,toEndOf)時會忽略此屬性。 – Nadav96

相關問題