2011-06-21 87 views
1

整天搜索,想出了一個可憐的解決方案。
我想要三個ImageButton放在屏幕的右側sida上。
不是中心,但正上方中心位置..android可以android:重力嗎?

有了下面的代碼我得到我想要的結果,但是,
如果用戶有他們不會有這個位置上的權利更大的屏幕?

我已經嘗試了android:gravity整天,我所能做的就是 以三個按鈕爲中心非常好。

我應該如何使這三個按鈕始終停留在他們在圖像上的位置 。 我有3種不同大小的按鈕圖像在hdpi,mdpi,xhdpi文件夾中。

 <RelativeLayout 
     android:id="@+id/rightRelativeLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     > 
      <ImageButton 
       android:id="@+id/btn_A" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="100dp" 
       android:text="A" 
       android:src="@drawable/drawer_1" 
       android:background="@android:color/transparent" 
       android:layout_alignParentRight="true" 

      /> 
      <ImageButton 
       android:id="@+id/btn_B" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="10dp" 
       android:text="B" 
       android:src="@drawable/drawer_1" 
       android:background="@android:color/transparent" 
       android:layout_alignParentRight="true" 
       android:layout_below="@+id/btn_A" 
      /> 
      <ImageButton 
       android:id="@+id/btn_C" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="10dp" 
       android:text="C" 
       android:src="@drawable/drawer_1" 
       android:background="@android:color/transparent" 
       android:layout_alignParentRight="true" 
       android:layout_below="@+id/btn_B" 

      /> 
     </RelativeLayout> 

三個按鈕的圖片放在右側,當然我的女兒。

+0

可能重複的[android可以使用layout_weight來定位RelativeLayout?](http://stackoverflow.com/questions/6428747/android-can-i-use-layout-weight-to-position-relativelayout) – Erik

回答

1

一個辦法是把所有三個按鈕的的LinearLayout內(爲了簡單起見),然後設置這個容器的佈局編程。

您可以使用getResources().getDisplayMetrics().heightPizels來查看屏幕的大小,然後相應地設置頂部邊距。

+0

謝謝你馬上試試 – Erik

+0

我知道如何使用rightRelativeLayout.addView。要添加動態創建的視圖,但問題是我現在應該使用rightRelativeLayout.layout(l,t,r,b)。我不添加視圖只改變佈局高度。 l =左,t =上,r =右。 – Erik

+0

@Erik你不改變佈局高度。你所需要做的就是更改頂部邊距,對吧? –

0

你可以添加一個LinearLayout中的RelativeLayout的內部,然後在LinearLayout中使用以下屬性:

android:layout_alignParentRight="true" 
android:layout_gravity="center_vertical" 

編輯:好吧,我已經做了一些測試,發現你想要的東西沒有做的一種方式使用編程造型吧,這裏的XML:

<RelativeLayout 
    android:id="@+id/rightRelativeLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_marginBottom="80dip" 
    > 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true"> 
     <ImageButton 
      android:id="@+id/btn_A" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="A" 
      android:src="@drawable/icon" 
      android:background="@android:color/transparent" 

     /> 
     <ImageButton 
      android:id="@+id/btn_B" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="B" 
      android:src="@drawable/icon" 
      android:background="@android:color/transparent" 
     /> 
     <ImageButton 
      android:id="@+id/btn_C" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="C" 
      android:src="@drawable/icon" 
      android:background="@android:color/transparent" 

     /> 
     </LinearLayout> 
    </RelativeLayout> 
+0

謝謝但是不希望按鈕居中。 – Erik

+0

好的,那麼你最好的辦法就是做Zack所說的話,並以編程方式設定邊距。 – JDx

+0

我編輯了我的答案。希望這可以幫助! – JDx