2013-11-01 39 views
2

我有一個圖像和兩個textviews(新聞標題和日期的另一個)的相對佈局。我爲標題的textview寬度設置了一個硬編碼值。如果我使用換行內容,它會重疊日期。Android - RelativeLayout與圖像和文字,設計問題

這裏是我的XML代碼:

<?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:orientation="horizontal" 
android:padding="5dp" > 

<LinearLayout 
    android:id="@+id/thumbnail" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_marginRight="5dp" 
    android:padding="3dp" > 

    <ImageView 
     android:id="@+id/imgIcon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/internet" 
     android:contentDescription="News" /> 
</LinearLayout> 

<TextView 
    android:id="@+id/txtTitle" 
    android:layout_width="200dp" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/thumbnail" 
    android:layout_toRightOf="@+id/thumbnail" 
    android:text="Timberlake's fourth studio album The 20/20 Experience – 2 of 2 was released on September 30, 2013." 
    android:textSize="14sp" /> 

<TextView 
    android:id="@+id/txtDate" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignTop="@+id/txtTitle" 
    android:layout_marginRight="5dp" 
    android:gravity="right" 
    android:text="23.09.2013" 
    android:textColor="#C0C0C0" 
    android:textSize="10sp" /> 

</RelativeLayout> 

對於屏幕尺寸4,7它看起來像這樣:

screen size 4,7

但對於屏幕尺寸5,1它看起來不錯:

screen size 5,1

我的目標是THA t我對每種屏幕尺寸都有相同的外觀。 標題和日期之間的空格應該始終相同。 我該如何做到這一點?

+1

使用'dp'代替文字大小'sp'? –

+0

我改變了它,但沒有區別 –

回答

2

您已經在使用RelativeLayout,所以令人驚訝的是,您可以在這裏快速找到解決方法。留下你的TextView的寬度爲match_parent,但你想要做的是將它夾在ImageView和你用於約會的TextView之間。嘗試執行以下操作(請注意,我必須在佈局中切換TextViews的順序才能完成此項工作)。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:padding="5dp" > 

    <LinearLayout 
     android:id="@+id/thumbnail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_marginRight="5dp" 
     android:padding="3dp" > 

      <ImageView 
       android:id="@+id/imgIcon" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:contentDescription="News" /> 
    </LinearLayout> 

    <!-- Note: I switched txtDate and txtTitle in your layout file ONLY --> 
    <!-- This will NOT change their order in your actual view   --> 
    <TextView 
     android:id="@+id/txtDate" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignTop="@+id/txtTitle" 
     android:layout_marginRight="5dp" 
     android:gravity="right" 
     android:text="23.09.2013" 
     android:textColor="#C0C0C0" 
     android:textSize="10sp" /> 

    <!-- This is the important part, note the android:layout_toLeftOf --> 
    <!-- Also remember to change the width back to "wrap_content --> 
    <TextView 
     android:id="@+id/txtTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/thumbnail" 
     android:layout_toRightOf="@+id/thumbnail" 
     android:layout_toLeftOf="@id/txtDate" 
     android:text="Timberlake's fourth studio album The 20/20 Experience – 2 of 2 was released on September 30, 2013." 
     android:textSize="14sp" /> 

</RelativeLayout> 

這應該給你你想要的觀點。

希望這會有所幫助。祝你好運,快樂的編碼!

+0

謝謝!它在佈局文件中工作,但是如果我編譯應用程序,訂單就會改變。這非常令人困惑 –

+0

如何?日期是先來,然後是描述? –

+0

是的。我必須改變我的活動? –