没有数据时如何为应用程序小部件设置默认文本?
How to set a default text to app widget when there is no data?
我在我的应用程序小部件中使用 GridView。我想在没有数据时为应用程序小部件设置默认文本。我尝试使用 getLoadingView() 方法,但它不起作用。
getLoadingViewMethod() of WidgetViewsFactory.java:
@Override
public RemoteViews getLoadingView() {
Log.e("textview is displayed","true");
RemoteViews row = new RemoteViews(mContext.getPackageName(), R.layout.widget_default_display);
row.setTextViewText(R.id.txt_default_widget,"DEFAULT TEXT");
return row;
}
widget_default_display.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="180dp">
<TextView
android:id="@+id/txt_default_widget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/no_notifications"
android:textColor="@color/txt_sub_title_gray"
android:textSize="@dimen/txt_title_size"/>
</LinearLayout>
请给我一些解决方案。
您可以为您的适配器设置空视图。
View emptyView = LayoutInflater.from(yourContext).inflate(R.layout.xml_for_empty_view, null, false);
yourAdapter.setEmptyView(emptyView);
应用小部件中的 AdapterView
与您应用的本地布局中的使用非常相似。要在AdapterView
的集合为空时显示某个View
,您需要将View
设置为AdapterView
上的空View
。
对于 Widget,RemoteViews
class 有 setEmptyView()
方法。从包含您的 GridView
的布局创建主 RemoteViews
对象后,您将在 AppWidgetProvider
中使用此方法。例如:
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
...
rv.setEmptyView(R.id.grid_view, R.id.txt_default_widget);
请注意,空 View
- txt_default_widget
TextView
,在本例中 - 必须与 GridView
在同一主布局中,而不是在项目布局。
我在我的应用程序小部件中使用 GridView。我想在没有数据时为应用程序小部件设置默认文本。我尝试使用 getLoadingView() 方法,但它不起作用。
getLoadingViewMethod() of WidgetViewsFactory.java:
@Override
public RemoteViews getLoadingView() {
Log.e("textview is displayed","true");
RemoteViews row = new RemoteViews(mContext.getPackageName(), R.layout.widget_default_display);
row.setTextViewText(R.id.txt_default_widget,"DEFAULT TEXT");
return row;
}
widget_default_display.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="180dp">
<TextView
android:id="@+id/txt_default_widget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/no_notifications"
android:textColor="@color/txt_sub_title_gray"
android:textSize="@dimen/txt_title_size"/>
</LinearLayout>
请给我一些解决方案。
您可以为您的适配器设置空视图。
View emptyView = LayoutInflater.from(yourContext).inflate(R.layout.xml_for_empty_view, null, false);
yourAdapter.setEmptyView(emptyView);
应用小部件中的 AdapterView
与您应用的本地布局中的使用非常相似。要在AdapterView
的集合为空时显示某个View
,您需要将View
设置为AdapterView
上的空View
。
对于 Widget,RemoteViews
class 有 setEmptyView()
方法。从包含您的 GridView
的布局创建主 RemoteViews
对象后,您将在 AppWidgetProvider
中使用此方法。例如:
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
...
rv.setEmptyView(R.id.grid_view, R.id.txt_default_widget);
请注意,空 View
- txt_default_widget
TextView
,在本例中 - 必须与 GridView
在同一主布局中,而不是在项目布局。