RemoteViews 和 addView(水平):只显示第一个项目(视图)
RemoteViews and addView (horizontal) : only the first item (view) is showing
我正在开发一个小部件,但在将视图添加到我的 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>
如果您有任何解决此问题的想法..在此先感谢。
尝试将 item.xml 中父布局的宽度更改为 wrap_content
。
因为 fill_parent
它将覆盖容器的整个宽度 (view_container
),并且不会有可用的 space 用于其他项目。
<?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>
PS: 如果你有很多图片
,也许最好使用HorizontalScrollView
我正在开发一个小部件,但在将视图添加到我的 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>
如果您有任何解决此问题的想法..在此先感谢。
尝试将 item.xml 中父布局的宽度更改为 wrap_content
。
因为 fill_parent
它将覆盖容器的整个宽度 (view_container
),并且不会有可用的 space 用于其他项目。
<?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>
PS: 如果你有很多图片
,也许最好使用HorizontalScrollView