Динамически загружать элемент управления xml и совместно использовать элемент управления пользовательского интерфейса - PullRequest
0 голосов
/ 01 июля 2018

Я новичок в xamarin. Можно ли загрузить общий элемент управления пользовательского интерфейса в XML-файл, если да, то как? Я открыт для лучшей идеи.

Ниже приведена статическая загрузка через include, где parent.axml статическая загрузка child.xml.

 <include
            android:id="@+id/child"
            layout="@layout/child"
            android:layout_below="@id/toolbar"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

parent.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar"
         android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <include
        android:id="@+id/child"
        layout="@layout/child"
        android:layout_below="@id/toolbar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/parent_layout"
        android:layout_below="@id/child">
        <TextView
            android:id="@+id/parent_text"
            android:layout_margin="16dp"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Click to go to the moon!"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:singleLine="true" />
    </LinearLayout>
</LinearLayout>

Child.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:local="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"> 
    <TextView
        android:id="@+id/child_text"
        android:layout_margin="16dp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="You made it!"
        android:textAppearance="?android:attr/textAppearanceSmall" />
</RelativeLayout>

Идея состоит в том, что он может достичь доли элементов управления пользовательского интерфейса. В этом случае parent.axml загружает child.xml в его заполнитель на основе условия.

1 Ответ

0 голосов
/ 01 июля 2018

Вы можете использовать LayoutInflater, чтобы раздуть макеты и автоматически прикрепить их к родителю (или нет):

var linearLayout = LayoutInflater.Inflate(Resource.Layout.Child, parent, true);
var textView = linearLayout.FindViewById<TextView>(Resource.Id.child_text);
textView.Text = "Inflated and attached to Parent";

Также в зависимости от вашего варианта использования, использование автономного Fragment и добавление его к «родителю» может быть лучшим решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...