2013-02-21 72 views
0

我嘗試在我的屏幕頂部創建一些筆畫,其中顯示4件東西。左側的後退按鈕,中間的水平名稱以及右側的scoreInfoOne和scoreInfoTwo,但是位於下方。我使用下面的代碼,但奇怪的是,關卡名稱看起來並不居中,scoreInfoTwo的值越長,關卡名稱就越左。有任何想法嗎?xml居中textview到左邊

<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="35dp" 
     android:background="#25ab89" 
     android:orientation="horizontal" 
     android:weightSum="4" > 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:orientation="vertical" > 

      <ImageView 
       android:id="@+id/ivBackButton" 
       android:layout_width="18dp" 
       android:layout_height="18dp" 
       android:src="@drawable/arrow" /> 
     </LinearLayout> 

     <TextView 
      android:id="@+id/tvScoreBoard" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="2" 
      android:gravity="center" 
      android:text="level" 
      android:textColor="#ffffff" 
      android:textSize="18dp" /> 

     <LinearLayout 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="1" 
      android:gravity="right" 
      android:orientation="vertical" 
      android:paddingRight="2dp" > 

      <TextView 
       android:id="@+id/tvScoreInfoOne" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="right" 
       android:text="0/30" 
       android:textColor="#ffffff" 
       android:textSize="12dp" /> 

      <TextView 
       android:id="@+id/tvScoreInfoTwo" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="right" 
       android:text="score:" 
       android:textColor="#ffffff" 
       android:textSize="12dp" > 
      </TextView> 
     </LinearLayout> 

回答

1

你的孩子的意見,必須在layout_width設置爲零:

android:layout_width="0px" 

所以,你的佈局會再看看這樣的:

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="35dp" 
    android:background="#25ab89" 
    android:orientation="horizontal" 
    android:weightSum="4" > 

    <LinearLayout 
     android:layout_width="0px" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:orientation="vertical" > 

     <ImageView 
      android:id="@+id/ivBackButton" 
      android:layout_width="18dp" 
      android:layout_height="18dp" 
      android:src="@drawable/arrow" /> 
    </LinearLayout> 

    <TextView 
     android:id="@+id/tvScoreBoard" 
     android:layout_width="0px" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_weight="2" 
     android:gravity="center" 
     android:text="level" 
     android:textColor="#ffffff" 
     android:textSize="18dp" /> 

    <LinearLayout 
     android:layout_width="0px" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:layout_weight="1" 
     android:gravity="right" 
     android:orientation="vertical" 
     android:paddingRight="2dp" > 

     <TextView 
      android:id="@+id/tvScoreInfoOne" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right" 
      android:text="0/30" 
      android:textColor="#ffffff" 
      android:textSize="12dp" /> 

     <TextView 
      android:id="@+id/tvScoreInfoTwo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="right" 
      android:text="score:" 
      android:textColor="#ffffff" 
      android:textSize="12dp" > 
     </TextView> 
</LinearLayout> 
+0

非常感謝你,這是訣竅!你能解釋我出了什麼問題嗎?我使用了包裝內容,它不應該佔據比我給予的重量更多的地方,不是嗎? – 2013-02-21 20:04:41

+0

'wrap_content'將忽略權重值。您應該始終使用'0px'(或任何其他測量 - 「dip」,「dp」等)在佈局方向上。因此,對於加權水平佈局,您將寬度設置爲0,對於垂直佈局,您可以將layout_height設置爲零。 – Phil 2013-02-21 20:06:42

1

首先,你不能在LinearLayout使用android:layout_gravity="anything"。對於LinearLayout,您可以使用權重來定義要使用多少空間。對於您正在嘗試做的事情,我建議您使用RelativeLayout,然後您可以使用android:layout_below="@+id/other_textview來定義您想要的TextView或其他項目的位置,並且有很多android:layout_[direction]可供選擇,並且可以使用layout_gravity="center_horizontal"

<RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="35dp" 
      android:background="#25ab89"> 

       <ImageView 
        android:id="@+id/ivBackButton" 
        android:layout_width="18dp" 
        android:layout_height="18dp" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentTop="true" 
        android:src="@drawable/arrow" /> 

       <TextView 
        android:id="@+id/tvScoreBoard" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal" 
        android:layout_below="@id/ivBackButton" 
        android:gravity="center" 
        android:text="level" 
        android:textColor="#ffffff" 
        android:textSize="18dp" /> 

       <TextView 
        android:id="@+id/tvScoreInfoOne" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="right" 
        android:layout_below="@id/tvScoreBoard" 
        android:alignParentRight="true" 
        android:text="0/30" 
        android:textColor="#ffffff" 
        android:textSize="12dp" /> 

       <TextView 
        android:id="@+id/tvScoreInfoTwo" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="right" 
        android:layout_below="@id/tvScoreInfoTwo" 
        android:alignParentRight="true" 
        android:text="score:" 
        android:textColor="#ffffff" 
        android:textSize="12dp" /> 
</RelativeLayout> 
+0

感謝@Matt,也應該工作..這是更少的代碼。前三個項目彼此相鄰,所以我應該使用onRightOf我猜。 – 2013-02-21 20:08:04

+1

我只是試圖得到你想要做的事情,然後寫我的代碼來匹配。你可以很容易地通過使用'layout_toRightOf =「」'等快速改變它。 – Matt 2013-02-21 20:09:48