2012-04-09 86 views
1

您好我設法使圖標中心與線性視圖中的文本相同,但我想在右側添加一個箭頭圖像,所以我必須切換到相對視圖。如圖所示,我無法設置相對視圖左側的圖標看起來像線性視圖。Android相對佈局無法在中心生成圖像

編輯
我想箭頭圖標留在右邊。

enter image description here
左圖是線性的,右是相對的。

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layercontainer" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="10dp"> 
<ImageView android:id="@+id/categoryIcon" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentBottom="true" 
    android:layout_marginRight="15dp" 
    android:layout_marginTop="5dp" 
    android:layout_marginBottom="5dp" /> 
<TextView android:id="@+id/categoryTitle" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:gravity="center_vertical" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentBottom="true" 
    android:layout_toRightOf="@id/categoryIcon" 
    android:textStyle="bold" 
    android:textSize="22dp" 
    android:textColor="#000000" 
    android:layout_marginTop="5dp" 
    android:layout_marginBottom="5dp" /> 
<ImageView 
     android:id="@+id/nextIcon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_vertical" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp"/> 
</RelativeLayout> 
+0

我對不起,我沒有做出明確的解釋。 我希望箭頭留在右側同時希望對齊在線性佈局中仍然看起來一樣。 – Eric 2012-04-09 16:05:15

回答

4

我建議使用TextView的性質drawableLeft和drawableRight

android:drawableLeft="@drawable/whatever" 
android:drawableRight="@drawable/arrow" 
android:width="fill_parent" 

這種方式設置的TextView的重力中心,一切都應該是確定

而且,使用單一的TextView,而不是RelativeLayout + 3視圖是簡單性的重大改進。無論如何,如果你堅持3個視圖,使用LinearLayout而不是RelativeLayout是一個很好的建議。

+0

如果我想讓圖標粘在右側怎麼辦? – Eric 2012-04-09 16:07:00

+0

嘗試使TextView「fill_parent」的智慧。然後,您可能需要將重力設置爲left | center_vertical,以使文本留在左側。如果這不起作用,不要發瘋,並堅持linearlayout + TextView(圖標+文本)+ ImageView(箭頭)。有一個屬性drawablePadding,但它會導致你頭痛。 – Maragues 2012-04-09 16:20:19

+0

'android:layout_width =「fill_parent」'和'android:drawableRight =「@ drawable/next」'works。 非常感謝Maragues! – Eric 2012-04-09 16:30:51

1

爲什麼不能使用LinearLayout?

好像這樣的工作:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/layercontainer" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp"> 
    <ImageView android:id="@+id/categoryIcon" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical" 
     android:layout_marginRight="15dp" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" /> 
    <TextView android:id="@+id/categoryTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical" 
     android:textStyle="bold" 
     android:textSize="22dp" 
     android:textColor="#000000" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp" /> 
    <ImageView 
     android:id="@+id/nextIcon" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:gravity="center_vertical" 
     android:layout_marginTop="5dp" 
     android:layout_marginBottom="5dp"/> 
</LinearLayout> 
+0

如果我想讓圖標粘在右側怎麼辦? – Eric 2012-04-09 16:06:45

+0

將最後一個imageview更改爲'android:layout_width =「0dp」',然後添加'android:layout_weight =「1」',使其在放置前兩個後獲得所有剩餘空間,然後在android:layout_gravity =「right 「',這將使小部件對齊到視圖空間的右側。這應該給你你想要的樣子。 – Barak 2012-04-09 17:08:06

0

您應該爲一個簡單的XML結構的用戶的LinearLayout

因爲The LinearLayout is the most simple layout available in Android. A LinearLayout organizes layout components in a linear fashion horizontally or vertically

Creating Efficient Layouts說,大約的RelativeLayout和LinearLayout中的表現: