40

1 つのフレーム レイアウトに 2 つの線形レイアウトがあります。

<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>

ここではtop margin、id を 10 dp に設定して線形レイアウトをlayoutbtnlinear_aboutme設定していますが、コードでこの 10 dp を 50 dp に変更したい場合、プログラムでこの上部マージンを変更するにはどうすればよいですか?

4

7 に答える 7

29

LayaoutParams は通常、親レイアウトのためにマージンを設定するときに混乱を招きます... したがって、この MarginLayoutParams は非常に便利で、すべてのレイアウトで機能します。

Java コード

MarginLayoutParams params = (MarginLayoutParams) view.getLayoutParams();
params.width = 200; //Ths value 200 is in px... Please convert in DP
params.leftMargin = 100; 
params.topMargin = 200;

Kotlin コード

val params: MarginLayoutParams = view!!.layoutParams as MarginLayoutParams
params.width = 200 
params.leftMargin = 100 
params.topMargin = 200
于 2016-02-26T09:35:26.730 に答える
9

これにより、他のマージン値を更新する必要なく、上部マージンが更新されます。

LinearLayout layout = (LinearLayout) findViewById(R.id.your_linear_layout);
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) layout.getLayoutParams();
layoutParams.topMargin = 200;
layout.setLayoutParams(layoutParams);
于 2016-02-04T08:32:49.030 に答える
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ください。

于 2014-08-27T08:46:10.127 に答える