小编kkg*_*ery的帖子

Android Widgets:如何在运行时向RemoteViews添加视图

我想在运行时将以线性布局排列的文本视图添加到我的小部件中.我这样做:

LinearLayout l = new LinearLayout(context);
for (int i = 0; i < 10; i++) {
    TextView t = new TextView(context);
    t.setText("Hello");
    l.addView(t);  }        
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.main);
RemoteViews view = new RemoteViews (context.getPackageName(), l.getId());
views.addView(R.layout.main, view);
Run Code Online (Sandbox Code Playgroud)

但是当我添加小部件时,我得到一个问题加载小部件错误.似乎RemoteViews接收构造的视图id作为参数有问题.但我无法引用XML资源,因为它们是在运行时创建的.在运行时填充RemoteViewswith 的正确方法是什么TextViews

android widget textview remoteview

8
推荐指数
1
解决办法
3042
查看次数

动态更改Android首选项的widgetlayout资源

我在首选项屏幕中创建了一个首选项,如下所示:

<PreferenceScreen>
    <Preference
        android:title="title"
        android:key="key"
        android:widgetLayout="@layout/someview"/>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

在这里,我设置了一个widgetlayout资源,该资源应显示在首选项的右侧(如复选框首选项的复选框).我也可以在我的代码中设置这个资源PreferenceActivity.onCreate():

Preference myPreference = findPreference("key");
myPreference.setWidgetLayoutResource(R.layout.someview);
Run Code Online (Sandbox Code Playgroud)

这两种方法都可以正常工作,因此我可以在首选项的右侧看到我的资源.但是,我无法访问此资源(someview)以在运行时更改其属性.

既没有手动设置资源ID,也没有从资源中膨胀或findViewById似乎工作 - 我找不到资源/资源ID无效的异常.似乎偏好活动稍后会使资源膨胀.

有没有人遇到同样的问题?有关如何widgetlayout在运行时更改资源属性的任何想法?

这是一个类似的问题,但没有回答

android preferenceactivity android-preferences

7
推荐指数
1
解决办法
6160
查看次数

以编程方式将TextView添加到主屏幕小部件

我想以编程方式将文本视图控件添加到我的主屏幕小部件.在下面的示例中,我使用TextViews填充Linearlayout,但是如何在此处使用RemoteView?它只接受xml资源布局作为参数.

public class MyWidget extends AppWidgetProvider {
    public void onUpdate(Context _context, AppWidgetManager appWidgetManager, 
                         int[] appWidgetIds) {

        LinearLayout l = new LinearLayout(_context);

        for (int i = 0; i < 10; i++) {
            TextView t = new TextView(_context);
            t.setText("Hello");
            l.addView(t); 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我看到的所有教程都明确地使用其预定义控件的值填充RemoteViews对象.我想添加控制程序.

RemoteViews views = new RemoteViews(context.getPackageName(),
R.layout.my_widget);
views.setTextViewText(R.id.widget_control1, value1);
views.setTextViewText(R.id.widget_control2, value2);
Run Code Online (Sandbox Code Playgroud)

layout android widget remoteview

4
推荐指数
2
解决办法
4397
查看次数