多次包含时在布局内设置Android RemoteViews的文本

Posted

技术标签:

【中文标题】多次包含时在布局内设置Android RemoteViews的文本【英文标题】:Set text of Android RemoteViews inside layout when include it multiple times 【发布时间】:2017-11-07 07:38:41 【问题描述】:

我指的是这个问题: How do I access the views inside the layout when I reuse it multiple times?

我有以下两种布局:

<!-- layout_to_include.xml -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical">

    <TextView
        android:id="@+id/text_view"
        android:layout_
        android:layout_/>

</LinearLayout>

<!-- widget.xml -->
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical">

    <include
        android:id="@+id/included_layout_1"
        layout="@layout/layout_to_include"/>

    <include
        android:id="@+id/included_layout_2"
        layout="@layout/layout_to_include"/>

</LinearLayout>

通常,您可以在包含的布局中以编程方式访问 TextView,如下所示:

LinearLayout l1 = (LinearLayout) findViewById(R.id.included_layout_1);
((TextView) l1.findViewById(R.id.text_view)).setText("test1");

LinearLayout l2 = (LinearLayout) findViewById(R.id.included_layout_2);
((TextView) l2.findViewById(R.id.text_view)).setText("test2");

但就我而言,我有一个只能通过 RemoteViews 访问的 Android AppWidget:

RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.setTextViewText(R.id.text_view, "test1");

这只会改变第一个 TextView 的文本。

我还没有找到任何解决方案,所以我的问题是是否可以在多个包含的布局中设置 TextView 的文本。

【问题讨论】:

【参考方案1】:

可以做到。

删除你的includes;您需要以编程方式添加(没有其他方式 AFAIK),因此将 id(例如 LinearLayout)添加到小部件的线性布局中,并且:

RemoteViews one = new RemoteViews(getPackageName(), R.layout.layout_to_include);
one.setTextViewText(R.id.text_view, "tv-ONE"); // <---
remoteViews.addView(R.id.LinearLayout, one);

RemoteViews two = new RemoteViews(getPackageName(), R.layout.layout_to_include);
two.setTextViewText(R.id.text_view, "tv-TWO"); // <---
remoteViews.addView(R.id.LinearLayout, two);

【讨论】:

以上是关于多次包含时在布局内设置Android RemoteViews的文本的主要内容,如果未能解决你的问题,请参考以下文章

多次使用 Android TouchDelegate 苦苦挣扎

使用多个视图/布局时在 Android 中处理触摸事件

Android布局

滚动时在 UIScrollView 内更新 UITextView 会使 scrollView 停止滚动

如何设置滚动视图内并包含两个 TextView 的线性布局的可见性消失?

我可以在 android 布局包含标签上设置自定义属性吗?