2017-07-25 70 views
2

我想要有一個回收器視圖行作爲給定的數字。基本上,圖像視圖將具有固定的尺寸。這兩個文本視圖應該覆蓋整個空間,但不應將圖像視圖移出屏幕。它也不應該裁剪它。 My desired layout 請忽略填充和邊距。除了圖像視圖和兩個文本視圖之間會有一個邊距。如何設置此視圖?

我曾嘗試:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.8"> 

     <TextView 
      android:id="@+id/tv1" 
      android:layout_alignParentStart="true" 
      android:layout_alignParentTop="true" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      /> 

     <TextView 
      android:layout_alignParentStart="true" 
      android:layout_below="@id/tv1" 
      android:id="@+id/tv2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:maxLines="2" 
      android:ellipsize="end"/> 

    </RelativeLayout> 

    <ImageView 
     android:id="@+id/img" 
     android:layout_weight="0.2" 
     android:layout_width="85dp" 
     android:layout_height="50dp" 
     android:layout_marginStart="12dp" 
     android:layout_centerVertical="true" 
     android:scaleType="centerCrop"/> 
</LinearLayout> 

這樣做的問題是,與在textviews文本圖像視圖改變尺寸。我不要那個。我希望維度得到修復。

我本來可以把整個事情放在一個相對佈局中,但是我無法在兩個文本視圖和圖像視圖之間保留一個邊距。

回答

2

你的RelativeLayout應改爲:

<RelativeLayout 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"> 

ImageView

這取出android:layout_weight將拉伸的RelativeLayout,以適應空間和保持ImageView大小相同。

0

除了在文本視圖中使用wrap_content功能外,您還可以手動爲其分配一個大小,以便根據您擁有多少文本設置它而不是進行更改。

android:layout_width="300dp" 
android:layout_height="200dp" 

的實際大小,你可能要擺弄得到完全按照你想要它。

+0

這可以爲不同的屏幕尺寸創建問題嗎? –

+0

@ArkaPravaBasu它可以,但在這種情況下,你將不得不添加額外的XML文件來定義根據不同的屏幕尺寸調整大小。 – Andrei

+0

那麼有什麼方法可以避免大小分配? –

-1

這應該給你想要的效果:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"> 

<TextView 
    android:id="@+id/tv1" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_toLeftOf="@+id/img" 
    android:layout_toStartOf="@+id/img" 
    /> 
<TextView 
    android:layout_alignParentStart="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignRight="@+id/tv1" 
    android:layout_alignEnd="@+id/tv1" 
    android:layout_below="@id/tv1" 
    android:id="@+id/tv2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:maxLines="2" 
    android:ellipsize="end"/> 
<ImageView 
    android:id="@+id/img" 
    android:layout_width="85dp" 
    android:layout_height="50dp" 
    android:layout_marginStart="12dp" 
    android:layout_marginLeft="12dp" 
    android:layout_centerVertical="true" 
    android:scaleType="centerCrop" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentRight="true"/> 

+0

請原諒我的投票嗎? –

0

我認爲這是你在找什麼。屏幕尺寸獨立佈局。唯一固定的尺寸是在ImageView中。我添加了背景,因此您可以在Android Studio中預覽時立即檢查它。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       xmlns:tools="http://schemas.android.com/tools"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignBottom="@id/img" 
     android:layout_toLeftOf="@id/img" 
     android:layout_toStartOf="@id/img" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/tv1" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:background="#acacac" 
      android:gravity="center" 
      tools:text="TextView1" 
      /> 

     <TextView 
      android:id="@+id/tv2" 
      android:layout_width="match_parent" 
      android:layout_height="0dp" 
      android:layout_weight="1" 
      android:background="#d49e9e" 
      android:ellipsize="end" 
      android:gravity="center" 
      android:maxLines="2" 
      tools:text="TextView2"/> 
    </LinearLayout> 

    <ImageView 
     android:id="@+id/img" 
     android:layout_width="100dp" 
     android:layout_height="180dp" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:background="#90f760" 
     android:scaleType="centerCrop"/> 

</RelativeLayout>