我有一个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个选项卡。请帮忙!
您无法在bottomNavigationView
中使用appwidget
,
如果设置,则会出现跟随错误。
如果您熟悉布局,则创建App Widget布局很简单。但是,您必须注意,App Widget布局基于RemoteViews
,并不支持每种布局或视图Widget。
RemoteViews
对象(因此,是一个应用小部件)可以支持以下布局类:
FrameLayout
LinearLayout
RelativeLayout
GridLayout
以及以下窗口小部件类:
AnalogClock
Button
Chronometer
ImageButton
ImageView
ProgressBar
TextView
ViewFlipper
ListView
GridView
StackView
AdapterViewFlipper
不支持这些类的后代。
这里是Google的相关文章。https://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout