2014-01-15 52 views
0

我無法在LinearLayout中精確定位組件。 LinearLayout是水平的(ImageButton-TextView-ImageButton)。下面的圖片顯示了這個問題。數字(TextView)不是相對ImageButtons垂直或水平居中的(紅色線條表示中心)。正如您在代碼中看到的那樣,我將TextView組件佈局設置爲居中。這些數字是始終爲0到99之間和在LinearLayout中定位組件

enter image description here

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="0dp" 
    android:layout_gravity="center_horizontal" 
    android:layout_margin="25dip" 
    android:layout_weight="1" > 

    <ImageButton 
     android:id="@+id/game4PreviousButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="4dp" 
     android:background="@null" 
     android:contentDescription="@string/previousbutton" 
     android:enabled="false" 
     android:onClick="clickCheck" 
     android:src="@drawable/previousbutton" /> 

    <TextView 
     android:id="@+id/game4Step" 
     android:layout_width="80dip" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center|center" 
     android:layout_marginLeft="75dp" 
     android:layout_marginRight="75dp" 
     android:contentDescription="@string/game4step1" 
     android:text="" 
     android:textColor="#FFFFFF" 
     android:textSize="50sp" 
     android:textStyle="bold" /> 

    <ImageButton 
     android:id="@+id/game4NextButton" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="4dp" 
     android:background="@null" 
     android:contentDescription="@string/nextbutton" 
     android:enabled="true" 
     android:onClick="clickNext" 
     android:src="@drawable/nextbutton" /> 
</LinearLayout> 
+0

已經嘗試佈局weightSum設置爲99 和重量的33至每個組件,我張貼了以下的答案 – Android

回答

1

試試這個..

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

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

      <ImageButton 
       android:id="@+id/game4PreviousButton" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_margin="4dp" 
       android:background="@null" 
       android:contentDescription="@string/previousbutton" 
       android:enabled="false" 
       android:gravity="center" 
       android:onClick="clickCheck" 
       android:src="@drawable/previousbutton" /> 
     </LinearLayout> 

     <TextView 
      android:id="@+id/game4Step" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:contentDescription="@string/game4step1" 
      android:gravity="center" 
      android:text="01" 
      android:textSize="50sp" 
      android:textStyle="bold" /> 

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

      <ImageButton 
       android:id="@+id/game4NextButton" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_margin="4dp" 
       android:background="@null" 
       android:contentDescription="@string/nextbutton" 
       android:enabled="true" 
       android:gravity="center" 
       android:onClick="clickNext" 
       android:src="@drawable/nextbutton" /> 
     </LinearLayout> 
    </LinearLayout> 
+0

這是如此接近。數字水平和垂直居中。唯一的問題是,一個兩位數的數字比一位數的數字需要更多的水平空間,例如當它從9變換到10時,按鈕會移動得更遠。我已經在TextView中用'android:layout_width =「80dip」'補償了這個,在你的代碼地址中替換了這一行。 –

+0

非常感謝 –

1

我假設LinearLayout不是XML父元素,因爲沒有<?xml />正上方,或者你忘了。但

我相信你正在尋找如下:

<TextView 
    android:id="@+id/game4Step" 
    android:layout_width="80dip" 
    android:layout_height="match_parent" 
    android:layout_gravity="center_vertical" 
    android:layout_marginLeft="75dp" 
    android:layout_marginRight="75dp" 
    android:contentDescription="@string/game4step1" 
    android:text="" 
    android:textColor="#FFFFFF" 
    android:textSize="50sp" 
    android:textStyle="bold" /> 

而且改變的LinearLayout到

android:layout_height="wrap_content"

android:layout_weight="1"可以被刪除。

,使雙方IMageButtons

android:layout_height="match_parent"

+0

感謝您的建議。有了這個,水平位置保持不變,垂直位置上升,但太多了。 –

+0

我犯了一個錯誤。現在嘗試上面的代碼,並將LinearLayout高度設置爲wrap_content,而不是將其設置爲0dp,並將權重設置爲1 –

+0

,請參閱編輯的第一條評論。 –