[如何使加载微调器代替片段显示在活动中,直到该片段出现? (Xamarin.Android)

问题描述 投票:0回答:1

我有以下屏幕:

enter image description here

[当我单击AREA DE EXPOSICION TextView时,ExhibitionAreaFragment被加载到2 TextViews之下,当我单击SALÓN MULTIUSOS TextView时,MultipurposeRoomFragment被加载在2 TextViews之下。由于2 fragments包含非常大的可缩放图像,因此片段的更改持续2到3秒。等待时,我想像这样的加载微调器显示在屏幕上,代替片段:

loading spinner

不一定与链接中的看起来完全相同,但我希望它成为加载微调器,并且希望它成为活动布局的一部分,而不是警报对话框。

这是我的MainActivity课程:

[Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
public class MainActivity : AppCompatActivity
{
    TextView exhibitionAreaTextView;
    TextView multipurposeRoomTextView;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.activity_main);

        exhibitionAreaTextView = FindViewById<TextView>(Resource.Id.exhibitionAreaTextView);
        multipurposeRoomTextView = FindViewById<TextView>(Resource.Id.multipurposeRoomTextView);

        ExhibitionAreaFragment exhibitionAreaFragment = new ExhibitionAreaFragment();
        MultipurposeRoomFragment multipurposeRoomFragment = new MultipurposeRoomFragment();

        SupportFragmentManager.BeginTransaction().Add(Resource.Id.imageZoneLinearLayout, exhibitionAreaFragment).Commit();

        exhibitionAreaTextView.Click += delegate
        {
            SupportFragmentManager.BeginTransaction().Replace(Resource.Id.imageZoneLinearLayout, exhibitionAreaFragment).Commit();
        };

        multipurposeRoomTextView.Click += delegate
        {
            SupportFragmentManager.BeginTransaction().Replace(Resource.Id.imageZoneLinearLayout, multipurposeRoomFragment).Commit();
        };
    }
}

这是我的activity_main布局:

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:orientation="horizontal"
        android:minWidth="25px"
        android:minHeight="25px"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:weightSum="100"
        android:layout_margin="10dp">
        <TextView
            android:text="ÁREA DE EXPOSICION"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/exhibitionAreaTextView"
            android:layout_weight="50"
            android:gravity="center"
            android:background="#0000FF"/>
        <TextView
            android:text="SALÓN MULTIUSOS"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/multipurposeRoomTextView"
            android:layout_weight="50"
            android:gravity="center"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageZoneLinearLayout" />
</LinearLayout>
android-activity xamarin.android spinner loading
1个回答
0
投票

要创建加载视图,我已完成以下操作:

  • 创建的activity_main.xml
  • 创建一个空白的布局文件并将其包含在活动xml文件中
  • [添加了保存加载进度条的progressbar.xml文件。我包括在imageZoneLinearLayout
  • 我根据需要通过设置view.GONEview.VISIBLE在.kt文件中指定这些视图的行为(使用kotlin)>
  • progressBar.xml看起来像这样:

<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/progressBar"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_centerInParent="true"
    android:layout_gravity="center" />

blank_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/emptyLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:layout_gravity="center"
    android:orientation="vertical"
    android:visibility="gone">

    <TextView
        android:id="@+id/emptyView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginStart="20dp"
        android:layout_marginEnd="20dp"
        android:fontFamily="@font/gotham_medium"
        android:gravity="center"
        android:textSize="17sp"
        android:lineSpacingExtra="2dp"
        tools:text="some error" />

    <com.google.android.material.button.MaterialButton
        android:id="@+id/retry"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10dp"
        app:cornerRadius="3dp"
        android:text="retry"
        android:visibility="gone" />

</LinearLayout>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ui.activity.MainActivity">

    <LinearLayout
        android:orientation="horizontal"
        android:minWidth="25px"
        android:minHeight="25px"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:weightSum="100"
        android:layout_margin="10dp">
        <TextView
            android:text="ÁREA DE EXPOSICION"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/exhibitionAreaTextView"
            android:layout_weight="50"
            android:gravity="center"
            android:background="#0000FF"/>
        <TextView
            android:text="SALÓN MULTIUSOS"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:id="@+id/multipurposeRoomTextView"
            android:layout_weight="50"
            android:gravity="center"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageZoneLinearLayout"
        android:orientation="vertical">

        <include layout="@layout/empty_layout" />

        <include layout="@layout/progressbar" />
    </LinearLayout>

</LinearLayout>
© www.soinside.com 2019 - 2024. All rights reserved.