如何将activity_main布局用作xamarin上的小部件?

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

我有一个xamarin项目,我的主要目的是使用activity_main布局创建一个小部件,而我的活动主布局包括选项卡式页面,例如Tab1,Tab2和Tab3。这就是为什么我要在小部件上显示它们。根据我的研究,我需要一些xml文件才能在android上创建小部件。我的xml文件是这样的。

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="294dip"
    android:minHeight="72dip"
    android:resizeMode="horizontal"
      android:minResizeWidth="144dip"
    android:updatePeriodMillis="86400000"
    android:initialLayout="@layout/activity_main"/>

我添加了activity_main作为initialLayout,然后在包中做了一些安排。我的appwidget类是这样的。

    [BroadcastReceiver(Label = "Widget")]
    [IntentFilter(new string[] { "android.appwidget.action.APPWIDGET_UPDATE" })]
    [MetaData("android.appwidget.provider", Resource = "@xml/widget_word")]
    class AppWidget : AppWidgetProvider
    {
        public override void OnUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds)
        {             
            context.StartService(new Intent(context, typeof(UpdateService)));
        }
    }

我的updateService就是这样。

 public override void OnStart(Intent intent, int startId)
        {
            // Build the widget update for today
            RemoteViews updateViews = buildUpdate(this);

            // Push update for this widget to the home screen
            ComponentName thisWidget = new ComponentName(this, Java.Lang.Class.FromType(typeof(AppWidget)).Name);
            AppWidgetManager manager = AppWidgetManager.GetInstance(this);
            manager.UpdateAppWidget(thisWidget, updateViews);
        }




        public override IBinder OnBind(Intent intent)
        {
            throw new NotImplementedException();
        }


        public RemoteViews buildUpdate(Context context)
        {
            // Build an update that holds the updated widget contents
            var updateViews = new RemoteViews(context.PackageName, Resource.Layout.activity_main);

            return updateViews;
        }

我正在使用片段来显示tab1,tab2和tab3。如果我将片段axml文件添加到initialLayout,则可以正常工作。但它仅显示tab1。我觉得我应该使用activity_main在小部件上显示3个选项卡。请帮忙!

xamarin xamarin.android widget
1个回答
0
投票

您无法在bottomNavigationView中使用appwidget

如果设置,则会出现跟随错误。

enter image description here

如果您熟悉布局,则创建App Widget布局很简单。但是,您必须注意,App Widget布局基于RemoteViews,并不支持每种布局或视图Widget。

RemoteViews对象(因此,是一个应用小部件)可以支持以下布局类:

FrameLayoutLinearLayoutRelativeLayoutGridLayout

以及以下窗口小部件类:

AnalogClockButtonChronometerImageButtonImageViewProgressBarTextViewViewFlipperListViewGridViewStackViewAdapterViewFlipper

不支持这些类的后代。

这里是Google的相关文章。https://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout

© www.soinside.com 2019 - 2024. All rights reserved.