2013-06-18 59 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()。 –

相关问题