android如何设置默认文本对应用程序widget,当没有数据?

发布时间: 2017/3/19 18:42:14
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我使用的 GridView 在我的应用程序部件。我想要设置默认文本对应用程序widget,当没有数据。我试着做使用 getLoadingView() 方法,但它不工作。

getLoadingViewMethod() 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>

请建议我一些解决办法。

解决方法 1:

AdapterView在应用程序窗口widget是非常相似地用到一个在您的应用程序的本地 layout 。若要显示某一 ViewAdapterView 的集合是空的您需要设置的 View 为空 ViewAdapterView

为一个widget, RemoteViews 类有 setEmptyView() 这种方法。您将使用这种方法在你 AppWidgetProvider 后创建主要, RemoteViews 对象从 layout ,其中包含你 GridView 。例如︰

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 ,在这种情况下-必须是在同一主体 layoutGridView ,而不是在该项目中 layout

官方微信
官方QQ群
31647020