Подтвердить что ты не робот

Изменить линейный макет верхнего поля программным способом

У меня есть два линейных макета в одном макете кадра.

<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 layoutbtnlinear_aboutme на 10dp, но в коде я хочу изменить это 10dp на 50dp при некотором условии, как я могу изменить этот верхний край программно?

4b9b3361

Ответ 1

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

Ответ 2

LayaoutParams обычно создают путаницу при настройке поля из-за их родительского макета... Так что этот MarginLayoutParams очень полезен.

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

Ответ 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 );

Ответ 4

Это обновляет верхнее поле без необходимости обновлять другие значения полей.

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

Ответ 5

Я установил поля непосредственно с помощью кода ниже (я попытался использовать 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, если вы не нажмете ошибку.