Настройка, где содержимое загружается в пользовательском макете - PullRequest
0 голосов
/ 31 октября 2019

AM сборка модуля Android с пользовательской компоновкой, которая расширяет линейную компоновку. Я хотел бы указать, где я хочу, чтобы дочерний макет загружался, когда мой пользовательский макет надувается

. В моем пользовательском макете у меня есть следующий код

public class CustomLayout extends LinearLayout {

  public CustomLayout(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    context = context;
  }

     @Override
  protected void onFinishInflate() {
    super.onFinishInflate();
    if (isInEditMode())return;
    setOrientation(VERTICAL);
    LayoutInflater.from(getContext()).inflate(R.layout.custom_layout_template, this, true);
  }

}

ТАК мой шаблон пользовательского макета у меня есть

<merge
xmlns:android="http://schemas.android.com/apk/res/android"
>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_margin="5dp"
        android:id="@+id/offlineViewer"
        android:layout_width="match_parent"
        android:background="#4B4848"
        android:gravity="center"
        android:padding="5dp"
        android:layout_height="wrap_content">
        <TextView
            android:textSize="13sp"
            android:textStyle="italic"
            android:gravity="center"
            android:textColor="@android:color/white"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Your device is offline"
            />
    </RelativeLayout>

    //LOAD THE CONTENT HERE

</LinearLayout>
</merge>

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

<com.dev.testapp.CustomLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Texview
        android:layout_width="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_height="wrap_content"
        android:text="my activity content"
       />
  </RelativeLayout>

</com.dev.testapp.CustomLayout>

Выше работает без каких-либо ошибок, но я хотел бы разместить содержимое в пользовательском макете ниже относительного макета offlineviewer.

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

1 Ответ

0 голосов
/ 03 ноября 2019

Вы должны накачать свой макет в конструкторе из xml. Также вам необходимо удалить LinearLayout после слияния, потому что, добавляя тег слияния в корне, вы уже определяете LinearLayout в корне. По вашим настройкам вы создаете два LinearLayouts. Однако, если ваша мысль в точности соответствует вашей текущей настройке, вы не можете добавлять представления к своей целевой позиции в XML, вам следует динамически добавлять представления во время выполнения.

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