Добавление видов в LinearLayout в ViewFlipper - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь добавить несколько LinearLayouts (которые используются в качестве страниц, приведенных как ViewGroups, чтобы разрешить мне дочерние представления) в ViewFlipper (чтобы позволить мне пролистывать страницы).Затем мне нужно добавить контент на страницы.

Пока все необходимые страницы созданы, однако они пусты.Я пытался добиться этого двумя способами:

int currentNote = 0;
int currentPage = -1;
int pagesRequired = _numberOfPagesRequired;

// I am using ViewGroups as this is the only way I can find to add child LinearLayouts (stored in their own Views) to the page
ViewGroup[] notesPageInflatedLayout = new ViewGroup[pagesRequired];

foreach (CaseNote caseNote in foundCase.Notes)
{
    // If currentNote is 0 or a multiple of 10
    if (currentNote % 10 == 0)
    {
        // Increment the currentPage
        currentPage++;

        // Create a new page
        LayoutInflater notesPageLayoutInflater = LayoutInflater.From(this);
        notesPageInflatedLayout[currentPage] = notesPageLayoutInflater.Inflate(Resource.Layout.view_notes_page, null) as ViewGroup;

        // Set the TextView at the top of the page to the page number
        TextView temp = notesPageInflatedLayout[currentPage].FindViewById<TextView>(Resource.Id.temp);
        temp.Text = currentPage.ToString();

        // Add the page to the ViewFlipper
        NotesViewFlipper.AddView(notesPageInflatedLayout[currentPage]);
    }

    // Create content item (note)
    LayoutInflater notesLayoutInflater = LayoutInflater.From(this);
    View notesInflatedLayout = notesLayoutInflater.Inflate(Resource.Layout.view_note, null);

    TextView nameEntryTypeTextView = notesInflatedLayout.FindViewById<TextView>(Resource.Id.nameEntryTypeTextView);
    nameEntryTypeTextView.Text = "TBI - " + caseNote.EntryType;

    TextView detailsTextView = notesInflatedLayout.FindViewById<TextView>(Resource.Id.detailsTextView);
    detailsTextView.Text = caseNote.Details;

    TextView dateTextView = notesInflatedLayout.FindViewById<TextView>(Resource.Id.dateTextView);
    dateTextView.Text = caseNote.Date.ToShortDateString();

    // Add content item to current page and increment note number
    notesPageInflatedLayout[currentPage].AddView(notesInflatedLayout);
    currentNote++;
}

... и ...

int currentPage = 0;

while (foundCase.Notes.Count > 0)
{
    List<CaseNote> chunk = foundCase.Notes.Take(10).ToList();
    foundCase.Notes.RemoveRange(0, chunk.Count);

    LayoutInflater notesPageLayoutInflater = LayoutInflater.From(this);
    ViewGroup notesPageInflatedLayout = notesPageLayoutInflater.Inflate(Resource.Layout.view_notes_page, null) as ViewGroup;

    TextView temp = notesPageInflatedLayout.FindViewById<TextView>(Resource.Id.temp);
    temp.Text = currentPage.ToString();

    NotesViewFlipper.AddView(notesPageInflatedLayout);

    foreach (CaseNote caseNote in chunk)
    {
        LayoutInflater notesLayoutInflater = LayoutInflater.From(this);
        View notesInflatedLayout = notesLayoutInflater.Inflate(Resource.Layout.view_note, null);

        TextView nameEntryTypeTextView = notesInflatedLayout.FindViewById<TextView>(Resource.Id.nameEntryTypeTextView);
        nameEntryTypeTextView.Text = "TBI - " + caseNote.EntryType;

        TextView detailsTextView = notesInflatedLayout.FindViewById<TextView>(Resource.Id.detailsTextView);
        detailsTextView.Text = caseNote.Details;

        TextView dateTextView = notesInflatedLayout.FindViewById<TextView>(Resource.Id.dateTextView);
        dateTextView.Text = caseNote.Date.ToShortDateString();

        notesPageInflatedLayout.AddView(notesInflatedLayout);
    }

    currentPage++;
}

Оба эти метода работают правильно, если имеется 10 или менее элементов (поэтому добавляется только одна страница).См. Скриншоты ниже.

Ожидаемый вывод (который виден, когда создается только одна страница) -

Output

Вывод, когда более одногостраница создана (все страницы пусты) -

Output

Из любопытства я попытался изменить ViewFlipper на LinearLayout.Все страницы, как и ожидалось, отображаются одна за другой.Это заставляет меня поверить, что это может быть связано с тем, как я построил свой макет.Вы можете найти мой AXML -

view_notes.axml

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="25dp"
        android:gravity="center_horizontal">
        <ViewFlipper
            android:id="@+id/notesViewFlipper"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <!-- <include layout="@layout/view_notes_page"/> -->
        </ViewFlipper>
        <RelativeLayout
            android:id="@+id/navigationRelativeLayout"
            android:layout_height="wrap_content"
            android:layout_width="match_parent"
            android:visibility="gone">
            <Button
                android:text="Previous"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:id="@+id/previousButton"
                android:visibility="invisible"/>
            <Button
                android:text="Next"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_alignParentRight="true"
                android:id="@+id/nextButton"/>
        </RelativeLayout>
        <Button
            android:text="Add Note"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/addNoteButton"/>
    </LinearLayout>
</ScrollView>

view_notes_page.axml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:minWidth="0dp"
    android:minHeight="0dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/notesLinearLayout"
    android:paddingLeft="3dp"
    android:paddingRight="3dp"
    android:layout_marginBottom="-5dp">
    <TextView
        android:text="Notes"
        android:textColor="#000"
        android:id="@+id/temp"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="10dp"/>
    <!-- <include layout="@layout/view_note"/> -->
</LinearLayout>

view_note.axml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/case_type_background_top"
                android:padding="10dp">
                <LinearLayout
                    android:orientation="vertical"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:padding="10dp"
                    android:layout_alignParentLeft="true"
                    android:gravity="center_vertical">
                    <TextView
                        android:textColor="#000"
                        android:textAppearance="?android:attr/textAppearanceMedium"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/nameEntryTypeTextView"/>
                    <TextView
                        android:textAppearance="?android:attr/textAppearanceSmall"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/detailsTextView"/>
                    <TextView
                        android:textAppearance="?android:attr/textAppearanceSmall"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:id="@+id/dateTextView"/>
                </LinearLayout>
            </RelativeLayout>
        </LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        android:gravity="right"
        android:background="@drawable/case_type_background_bottom">
        <ImageButton
            android:tint="@android:color/white"
            android:background="@null"
            android:src="@drawable/baseline_fullscreen_24"
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:id="@+id/viewImageButton"
            android:scaleType="fitXY"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="10dp"/>
        <ImageButton
            android:tint="@android:color/white"
            android:background="@null"
            android:src="@drawable/baseline_edit_24"
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:id="@+id/editImageButton"
            android:scaleType="fitXY"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="10dp"/>
        <ImageButton
            android:tint="@android:color/white"
            android:background="@null"
            android:src="@drawable/baseline_remove_circle_24"
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:id="@+id/removeImageButton"
            android:scaleType="fitXY"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="10dp"/>
    </LinearLayout>
    <Space
        android:layout_width="match_parent"
        android:layout_height="15dp"/>
</LinearLayout>

Любая помощьбыл бы очень признателен!

...