2013-05-11 35 views
1

我有四個按鈕緊在一起形成一個正方形,我想努力弄清楚如何定位一個按鈕在四個按鈕,在中心,所以它基本上重疊。這是我目前的佈局,四個按鈕:是否可以將一個按鈕定位在一個表格佈局的頂部?

<TableRow android:layout_weight="0.2" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal|center" 
     android:layout_span="2" 
     android:gravity="center" 
     android:text="TextView" 
     android:textColor="#357ae8" 
     android:textSize="20dp" 
     android:textStyle="bold" /> 
</TableRow> 

<TableRow 
    android:layout_gravity="center_horizontal" 
    android:layout_weight="1" > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_column="0" 
     android:layout_marginBottom="-7dp" 
     android:layout_marginLeft="5dp" 
     android:layout_weight="1" 
     android:background="@drawable/b1tl" 
     android:gravity="center_horizontal" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_column="0" 
     android:layout_marginBottom="-7dp" 
     android:layout_marginRight="5dp" 
     android:layout_weight="1" 
     android:background="@drawable/b2tr" 
     android:gravity="center_horizontal" /> 
</TableRow> 

<TableRow 
    android:layout_margin="0dp" 
    android:layout_weight="1" > 

    <Button 
     android:id="@+id/button3" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_column="0" 
     android:layout_marginLeft="5dp" 
     android:layout_marginTop="-7dp" 
     android:layout_weight="1" 
     android:background="@drawable/b3bl" 
     android:gravity="center_horizontal" /> 

    <Button 
     android:id="@+id/button4" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_column="0" 
     android:layout_marginRight="5dp" 
     android:layout_marginTop="-7dp" 
     android:layout_weight="1" 
     android:background="@drawable/b4br" 
     android:gravity="center_horizontal" /> 
</TableRow> 

<TableRow 
    android:layout_margin="10dp" 
    android:layout_weight="0.1" > 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_column="0" 
     android:layout_weight="1" 
     android:gravity="center_horizontal" 
     android:text="Lives" 
     android:textColor="#357ae8" /> 

    <TextView 
     android:id="@+id/textView5" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_column="0" 
     android:layout_weight="1" 
     android:gravity="center_horizontal" 
     android:text="Score" 
     android:textColor="#357ae8" /> 
</TableRow> 

<TableRow 
    android:layout_margin="10dp" 
    android:layout_weight="0.1" > 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_column="0" 
     android:layout_weight="1" 
     android:gravity="center_horizontal" 
     android:text="" 
     android:textColor="#357ae8" /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_column="0" 
     android:layout_weight="1" 
     android:gravity="center_horizontal" 
     android:text="" 
     android:textColor="#357ae8" /> 
</TableRow> 

</TableLayout> 

我想我也許可以使用相對佈局,並嘗試硬編碼的按鈕,它是在廣場的中心按鈕,但只要我嘗試過這會影響桌面佈局。在Android佈局中可以做這種事情嗎?

+1

請嘗試使用「FrameLayout」。 – 2013-05-11 10:10:48

+0

您可以使用線性佈局,並將方向設置爲垂直,並在表格前有一個按鈕 – Raghunandan 2013-05-11 10:20:37

回答

3

嗨可以使用FrameLayout。這裏是完成的代碼,其中一個按鈕位於一行中兩個按鈕之間的中央。同樣,您可以解決在所有四個按鈕之間集中定位按鈕的問題。這是我做到的:在表格行> A FrameLayout中。在FrameLayout裏面一個LinearLayout和一個Button作爲一個Child,這樣它們就可以被both can overlap(framelayout的屬性)。通過這樣做,無論我們在LinearLayout中放置什麼,都將與前一個按鈕進行分層。


請檢查這個代碼。我認爲這是你想要什麼:

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

    <TableLayout 
     android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

<TableRow 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="0.2" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal|center" 
     android:layout_span="2" 
     android:gravity="center" 
     android:text="TextView" 
     android:textColor="#357ae8" 
     android:textSize="20dp" 
     android:textStyle="bold" /> 
</TableRow> 

<TableRow 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_gravity="center_horizontal" 
    android:layout_weight="1" > 

    <FrameLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="horizontal" 
       android:layout_weight="1" > 

       <Button 
        android:id="@+id/button1" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_marginBottom="-7dp" 
        android:layout_marginLeft="5dp" 
        android:layout_weight="1" 
        android:background="@drawable/ic_launcher" 
        android:gravity="center_horizontal" /> 

       <Button 
        android:id="@+id/button2" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_marginBottom="-7dp" 
        android:layout_marginRight="5dp" 
        android:layout_weight="1" 
        android:background="@drawable/ic_launcher" 
        android:gravity="center_horizontal" /> 
      </LinearLayout> 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="horizontal" 
       android:layout_weight="1" > 

       <Button 
        android:id="@+id/button1" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_marginBottom="-7dp" 
        android:layout_marginLeft="5dp" 
        android:layout_weight="1" 
        android:background="@drawable/ic_launcher" 
        android:gravity="center_horizontal" /> 

       <Button 
        android:id="@+id/button2" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_marginBottom="-7dp" 
        android:layout_marginRight="5dp" 
        android:layout_weight="1" 
        android:background="@drawable/ic_launcher" 
        android:gravity="center_horizontal" /> 
      </LinearLayout> 

     </LinearLayout> 



     <Button 
      android:id="@+id/button5" 
      android:layout_width="wrap_content" 
      android:layout_height="150dp" 
      android:layout_gravity="center" 
      android:text="Center Button" /> 

    </FrameLayout> 

</TableRow> 


<TableRow 
    android:layout_margin="10dp" 
    android:layout_weight="0.1" > 

    <TextView 
     android:id="@+id/textView4" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_column="0" 
     android:layout_weight="1" 
     android:gravity="center_horizontal" 
     android:text="Lives" 
     android:textColor="#357ae8" /> 

    <TextView 
     android:id="@+id/textView5" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_column="0" 
     android:layout_weight="1" 
     android:gravity="center_horizontal" 
     android:text="Score" 
     android:textColor="#357ae8" /> 
</TableRow> 

<TableRow 
    android:layout_margin="10dp" 
    android:layout_weight="0.1" > 

    <TextView 
     android:id="@+id/textView2" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_column="0" 
     android:layout_weight="1" 
     android:gravity="center_horizontal" 
     android:text="" 
     android:textColor="#357ae8" /> 

    <TextView 
     android:id="@+id/textView3" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_column="0" 
     android:layout_weight="1" 
     android:gravity="center_horizontal" 
     android:text="" 
     android:textColor="#357ae8" /> 
</TableRow> 

</TableLayout> 

</RelativeLayout> 
+0

這是非常好的謝謝,我正在嘗試使用它,但是當我嘗試定位時,如果位於四個按鈕的中心,它會影響其他按鈕的佈局,也許我做錯了,我會繼續嘗試!謝謝! :) – deucalion0 2013-05-12 12:25:04

+0

應該如何將代碼放置在四個按鈕之間而不影響佈局?謝謝! – deucalion0 2013-05-12 12:38:25

+1

如果你還沒有做過:我可以把它想成:連續拍攝一個Framelayout和一個按鈕,使它們重疊。在framelayout內採取水平線性佈局。該水平線性佈局中的第一個孩子將是另一個具有兩個孩子的垂直線性佈局。 Horizo​​ntal linera佈局的第二個子元素將是另一個具有兩個以上子元素的垂直線性佈局。因此,您可以將初始按鈕放置在這些元素的中心。希望你得到它,否則讓我知道。 – ruben 2013-05-13 20:03:33

1

我可能失去了一些東西,但是......

,如果你把你的當前佈局內RelativeLayout,將其排列到頂部,底部,左側&右。

確認沒有變化,它仍然正常工作。

然後在此RelativeLayout中放置一個按鈕,並將其對齊到此RelativeLayout的中心。

我沒有我的Eclipse方便檢查這個,但它應該是那麼簡單,不是嗎?


即十分什麼@durgomgiri在his answer說。

+1

是的你是對的,它的工作原理,這是nikmin做的。在我的代碼中有framelayout,但它們看起來都一樣。 – ruben 2013-05-21 14:11:16

相關問題