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

时间:2016-03-25 14:11:29

标签: java android xml android-widget remoteview

我正在制作一个小部件,但我在将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_width="fill_parent"
   android:layout_height="wrap_content"
   android:gravity="center">

   <LinearLayout
      android:orientation="horizontal"
      android:id="@+id/view_container"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content">

   </LinearLayout>

</RelativeLayout>

item.xml

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

   <LinearLayout
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       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_width="48dp"
           android:layout_height="48dp"
           android:layout_gravity="center"
           android:src="@drawable/ic_android_black_24dp" />

   </LinearLayout>

</LinearLayout>

如果您有任何想法解决这个问题,请提前感谢。

1 个答案:

答案 0 :(得分:0)

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

因为<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" 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_width="48dp" android:layout_height="48dp" android:layout_gravity="center" android:src="@drawable/ic_android_black_24dp" /> </LinearLayout> </LinearLayout> 会覆盖容器的整个宽度(HorizontalScrollView),并且其他项目的可用空间不会占用。

std::mutex deque_lock;

PS:如果您有很多图片,可能最好使用deque