Как программно установить вертикальное LinearLayout layout_gravity в center_horizontal? (Xamarin.Android) - PullRequest
0 голосов
/ 06 июня 2019

Я бы хотел центрировать следующие LinearLayout в центре его родителя программно:

<LinearLayout
    android:id="@+id/SignButtonsLinearLayout"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <homes.shared.components.customviews.HomesButton
        android:id="@+id/CheckListPDFClosureButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="3dip"
        android:drawableLeft="@drawable/CheckListPDFClosure"
        android:background="@drawable/MainBlueButton"
        style="@style/WhiteDeliveryNoteMenuBold"
        android:text="@string/CheckListPDFClosure" />
   <homes.shared.components.customviews.HomesButton
        android:id="@+id/SignatureAndCloseButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:drawableLeft="@drawable/SignatureAndClosure"
        android:background="@drawable/MainBlueButton"
        style="@style/WhiteDeliveryNoteMenuBold"
        android:text="@string/SignatureAndClose" /> 
</LinearLayout> 

Я скопировал LinearLayout в коде, подобном этому:

LinearLayout ll = this.FindViewById<LinearLayout>(Resource.Id.SignButtonsLinearLayout);

но объект не имеет LayoutGravity свойства

1 Ответ

1 голос
/ 06 июня 2019

Вы можете сделать это быстрой рукой так:

LinearLayout ll = this.FindViewById<LinearLayout>(Resource.Id.SignButtonsLinearLayout);
ll.SetGravity(GravityFlags.Center);

Или вы тоже можете сделать это так:

LinearLayout ll = this.FindViewById<LinearLayout>(Resource.Id.SignButtonsLinearLayout);
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams)lin.LayoutParameters;
layoutParams.Gravity = GravityFlags.Center;
ll.LayoutParameters = layoutParams;

Дополнительную информацию можно найти в этом ТАКом ответе и здесь.

EDIT:

Извинения, чтобы отрегулировать гравитацию макета, которая устанавливает гравитацию View или Layout относительно его родителя, тогда вы просто сможете добавить этот атрибут в свой файл макета axml. android:layout_gravity="center" как это:

<LinearLayout
    android:id="@+id/SignButtonsLinearLayout"
    android:layout_gravity="center"
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

Другим вариантом является размещение макетов, чтобы вы могли обернуть линейный макет в относительный макет, подобный этому, и использовать центр в родительском элементе.

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:focusableInTouchMode="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
        <LinearLayout
        android:id="@+id/SignButtonsLinearLayout"
        android:layout_centerInParent="true"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </LinearLayout>
</RelativeLayout>
...