2013-06-18 104 views
22

我在一個幀佈局中有兩個線性佈局。以編程方式更改線性佈局頂部邊距android

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="left" 
    android:orientation="vertical"> 

    <FrameLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="@drawable/image12"> 
     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 

       <LinearLayout 
        android:id="@+id/layoutbtnlinear_aboutme" 
        android:layout_width="fill_parent" 
        android:layout_height="55dp" 
        android:gravity="bottom" 
        android:layout_marginTop="10dp" 
        android:background="#b2b2b2" 
        android:orientation="horizontal" > 

        <ImageView 
         android:id="@+id/imgShare_layout_aboutme" 
         android:layout_width="wrap_content" 
         android:layout_height="55dp" 
         android:layout_gravity="right|center|end" 
         android:layout_weight="1.63" 
         android:src="@drawable/ic_share" /> 

        <TextView 
         android:id="@+id/txtTitle_layout_aboutme" 
         android:layout_width="wrap_content" 
         android:layout_height="55dp" 
         android:layout_gravity="left" 
         android:layout_weight="0.3" 
         android:fontFamily="Times New Roman" 
         android:text="About Me" 
         android:textColor="@android:color/black" 
         android:textSize="35sp" 
         android:textStyle="italic" /> 
       </LinearLayout> 

      <LinearLayout 
       android:id="@+id/content" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 

       <ImageButton 
         android:id="@+id/btnSlidingDrawerHandler_layout_aboutme" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center" 
         android:background="@drawable/ic_1_navigation_collapse" /> 


       <ListView 
        android:id="@+id/listView_layout_aboutme" 
        android:layout_width="fill_parent" 
        android:layout_height="match_parent" 
        android:footerDividersEnabled="true" 
        android:dividerHeight="4px" 
        android:isScrollContainer="true" 
        android:scrollbarAlwaysDrawVerticalTrack="true" 
        android:scrollbarStyle="outsideInset" 
        android:scrollbars="vertical"> 
       </ListView> 
      </LinearLayout> 
     </LinearLayout>   
    </FrameLayout> 

</LinearLayout> 

在這裏,我與ID layoutbtnlinear_aboutme塞汀線性佈局top margin到10dp,但在代碼中,我想改變這個10dp到50dp一些條件我如何編程改變這種頂邊距?

+0

採取對谷歌一看,還有很多其他的問題,與此類似,像http://stackoverflow.com/questions/9678785/android-setting-layoutparams-programmatically – bogdan

回答

78
layout = (LinearLayout) findViewById(R.id.layoutbtnlinear_aboutme); 
    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)layout.getLayoutParams(); 
    params.setMargins(0, 50, 0, 0); 
    layout.setLayoutParams(params); 
+0

謝謝......它的工作原理:) – user2064024

+0

爲什麼。只需點擊右鍵或點擊向上按鈕。 – Riser

3

使用本

layout = (LinearLayout) findViewById(R.id.layuout); 
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
     LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 

    layoutParams.setMargins(30, 20, 30, 0); 
layout.setLayoutParams(layoutParams); 
+0

感謝,但在這段代碼在哪裏我們將指定線性佈局的ID。那我們要在哪個佈局上設置保證金 – user2064024

+0

我已經編輯了我的代碼請檢查一下 – abhi

1

我已經建立了直接使用下面的代碼(我嘗試使用LinearLayout.LayoutParams但沒有工作對我來說)

LinearLayout layout = (LinearLayout)findViewById(R.id.yourrelative_layout); 
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); 
params.setMargins(3, 300, 3, 3); 
layout.setLayoutParams(params); 

只有這樣,這裏的利潤要注意的是LayoutParams應該被導入以下包android.widget.RelativeLayout.LayoutParams,除非你會打錯誤。

2

這更新了頂部邊距,而無需更新其他邊距值。

LinearLayout layout = (LinearLayout) findViewById(R.id.your_linear_layout); 
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) layout.getLayoutParams(); 
layoutParams.topMargin = 200; 
layout.setLayoutParams(layoutParams); 
13

LayaoutParams通常造成混亂,同時設置,因爲他們的父母佈局的保證金......所以這MarginLayoutParams是非常有用的。

MarginLayoutParams params = (MarginLayoutParams) view.getLayoutParams(); 
params.width = 200; params.leftMargin = 100; params.topMargin = 200; 
+2

這是最好的解決方案,因爲它允許您正確設置單個頁邊距。例如,如果您只需設置topMargin,只需使用params.topMargin = yourValue即可。這樣,其他利潤率不會受到影響。如果你使用Riser的解決方案,你將不得不使用setMargins(),它需要你設置所有4邊距。 – Tiago

+0

您可能必須在更改這些值後調用view.invalidate()和view.requestLayout()。 –

相關問題