2013-10-13 78 views
1

您好我正在開發Android應用程序,我在其中創建相對佈局編程,並嘗試爲其設置邊距並將其添加到具有方向線性的線性佈局中。 因此,這裏是我的代碼:爲相對佈局創建和設置頁邊距編程android

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/screen_background" 
    tools:context=".ChooseChannelsFragment" > 

    <LinearLayout 
     android:id="@+id/main_outer_llt" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="horizontal" 
     > 

    </LinearLayout> 

</RelativeLayout> 

和內部片段我加入相對佈局這樣

RelativeLayout relativeLayout = new RelativeLayout(getActivity()); 
    RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(200, 80); 
    relativeParams.setMargins(20, 20, 20, 20); 
    relativeLayout.setLayoutParams(relativeParams); 
    relativeLayout.setBackgroundColor(getResources().getColor(R.color.green_color)); 
    linearLayout.addView(relativeLayout); 

它創建一個給定的顏色和大小,但不接受利潤率佈局。難道我做錯了什麼?這個怎麼做?需要幫忙。謝謝。

+0

嘗試此鏈接 http://stackoverflow.com/questions/2481455/set-margins-in- a-linearlayout-programmatically –

+0

你的代碼解決了我的問題,Great(Y) –

回答

8

您在視圖上使用的LayoutParams類型應該實際上來自它的父級。

所以,如果您將RelativeLayout添加到LinearLayout,則您設置爲RelativeLayout的LayoutParams實際上應該是LinearLayout.LayourParams,而不是RelativeLayout.LayoutParams。

+0

這很好,它的工作。謝謝你的幫助 ... – nilkash

0

在這種情況下,父親是LinearLayout。所以您應該使用:

TableLayout.LayoutParams layoutParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT); 
     layoutParams.setMargins(20, 20, 20, 20); 
+0

但是這對於表格佈局是否適用於相對佈局? – nilkash

+0

這是正確的,LinearLayout的:) TableLayout :) – Younes

2

正如其他人所建議的,layout_margin#是家長的#邊緣與您的視圖之間的空間。

  • #替換 「左」, 「右」, 「頂」 或 「底」

獲取/設置頁邊距的工作對我來說有:

ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams(); 
params.topMargin += 20; 
mView.requestLayout(); // important 

當然,我的觀點確實是一個ViewGroup,父母也是一個ViewGroup。在大多數情況下,您應該將佈局參數轉換爲父級的View類LayoutParams(在本例中爲ViewGroup和RelativeLayout)