RemoteViews 和 addView(水平):仅显示第一项(视图)

Posted

技术标签:

【中文标题】RemoteViews 和 addView(水平):仅显示第一项(视图)【英文标题】:RemoteViews and addView (horizontal) : only the first item (view) is showing 【发布时间】:2016-07-13 07:19:39 【问题描述】:

我正在处理一个小部件,但在将视图添加到我的 RemoteView 时遇到了问题。

仅显示添加的第一个项目(视图)。

PS : 我需要横向添加视图。

这是我在RemoteViews 中添加视图的循环:

RemoteViews mainView = new RemoteViews(getPackageName(), R.layout.widget);
mainView.removeAllViews(R.id.view_container);
for (int i = 0; i < Constant.max; i++) 
   RemoteViews newView = new RemoteViews(getPackageName(), R.layout.item);
   newView.setImageViewBitmap(R.id.logo, Constant.data[i].getLogo());
   mainView.addView(R.id.view_container, newView);
   Log.e("Item added : ", Constant.data[i].getName());

widget.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_
   android:layout_
   android:gravity="center">

   <LinearLayout
      android:orientation="horizontal"
      android:id="@+id/view_container"
      android:layout_
      android:layout_>

   </LinearLayout>

</RelativeLayout>

item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_
   android:layout_>

   <LinearLayout
       android:layout_
       android:layout_
       android:layout_marginLeft="@dimen/margin_between"
       android:layout_marginRight="@dimen/margin_between"
       android:background="#F0F0F0"
       android:orientation="vertical"
       android:padding="2dp">

       <ImageView
           android:id="@+id/logo"
           android:layout_
           android:layout_
           android:layout_gravity="center"
           android:src="@drawable/ic_android_black_24dp" />

   </LinearLayout>

</LinearLayout>

如果您有任何解决此问题的想法.. 提前致谢。

【问题讨论】:

【参考方案1】:

尝试将 item.xml 中父布局的宽度更改为 wrap_content

因为fill_parent 它将覆盖容器的整个宽度 (view_container),并且不会有可用空间用于其他项目。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_
   android:layout_>

   <LinearLayout
       android:layout_
       android:layout_
       android:layout_marginLeft="@dimen/margin_between"
       android:layout_marginRight="@dimen/margin_between"
       android:background="#F0F0F0"
       android:orientation="vertical"
       android:padding="2dp">

       <ImageView
           android:id="@+id/logo"
           android:layout_
           android:layout_
           android:layout_gravity="center"
           android:src="@drawable/ic_android_black_24dp" />

   </LinearLayout>

</LinearLayout>

PS:如果你有很多图片,最好使用HorizontalScrollView

【讨论】:

以上是关于RemoteViews 和 addView(水平):仅显示第一项(视图)的主要内容,如果未能解决你的问题,请参考以下文章

理解RemoteViews

广播接收器未接收到意图 (RemoteViews / PendingIntent)

RemoteViews的用法

Android 小部件:RemoteViews 上的动画? [复制]

RemoteViews原理分析及应用

小部件更新的 RemoteViews 超出最大位图内存使用错误