【发布时间】:2021-05-14 08:45:26
【问题描述】:
我尝试根据用户将小部件扩展到多少行,在我的主页小部件中显示最多三个元素。
所以每个元素的高度应该是一行的高度。主要目标是让它在每台设备上看起来都正确。
这是我的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/shape_roundedcorners_white">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/article1"
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal"
android:layout_margin="@dimen/widget_margin"
android:background="#0000ff">
<ImageView
android:id="@+id/article1img"
android:layout_width="35dp"
android:layout_height="35dp"
android:gravity="center"
android:layout_gravity="center"
android:layout_marginRight="15dp"
android:layout_marginLeft="10dp"
android:src="@drawable/ic_notifications" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_margin="@dimen/inner_widget_margin">
<TextView
android:id="@+id/article1Title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/appwidget_text"
android:gravity="left"
android:text="@string/appwidget_title"
android:textColor="#000000"
android:textSize="14sp"
android:textStyle="bold"/>
<TextView
android:id="@+id/article1Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/appwidget_text"
android:gravity="left"
android:text="@string/appwidget_text"
android:textColor="#000000"
android:textSize="12sp"/>
</LinearLayout>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:orientation="vertical"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
style="@style/Divider">
<!--<View style="@style/Divider"/>-->
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/article2"
android:layout_width="match_parent"
android:layout_height="85dp"
android:orientation="horizontal"
android:layout_margin="@dimen/widget_margin"
android:background="#ffffff">
<ImageView
android:id="@+id/article2img"
android:layout_width="40dp"
android:layout_height="35dp"
android:gravity="center"
android:layout_gravity="center"
android:layout_marginRight="15dp"
android:layout_marginLeft="10dp"
android:src="@drawable/ic_notifications" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="35pt"
android:orientation="vertical"
android:layout_margin="@dimen/inner_widget_margin"
android:background="#ffffff">
<TextView
android:id="@+id/article2Title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/appwidget_text"
android:gravity="left"
android:text="@string/appwidget_title"
android:textColor="#000000"
android:textSize="14sp"
android:textStyle="bold"/>
<TextView
android:id="@+id/article2Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/appwidget_text"
android:gravity="left"
android:text="@string/appwidget_text"
android:textColor="#000000"
android:textSize="12sp"/>
</LinearLayout>
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/divider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:orientation="vertical"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
style="@style/Divider">
<!--<View style="@style/Divider"/>-->
</LinearLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/article3"
android:layout_width="match_parent"
android:layout_height="40dp"
android:orientation="horizontal"
android:layout_margin="@dimen/widget_margin"
android:background="#ffffff">
<ImageView
android:id="@+id/article3img"
android:layout_width="35dp"
android:layout_height="35dp"
android:gravity="center"
android:layout_gravity="center"
android:layout_marginRight="15dp"
android:layout_marginLeft="10dp"
android:src="@drawable/ic_notifications" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="35pt"
android:orientation="vertical"
android:layout_margin="@dimen/inner_widget_margin"
android:background="#ffffff">
<TextView
android:id="@+id/article3Title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/appwidget_text"
android:gravity="left"
android:text="@string/appwidget_title"
android:textColor="#000000"
android:textSize="14sp"
android:textStyle="bold"/>
<TextView
android:id="@+id/article3Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/appwidget_text"
android:gravity="left"
android:text="@string/appwidget_text"
android:textColor="#000000"
android:textSize="12sp"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
与
<dimen name="widget_margin">8dp</dimen>
<dimen name="inner_widget_margin">2dp</dimen>
和
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid
android:color="#ffffff"/>
<corners
android:radius="12dp"/>
</shape>
我读到here 说一行的高度应该是40dp 这就是为什么我将我的article1 - 布局设置为 40dp 并将我的信息设置为
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:initialKeyguardLayout="@layout/news_widget"
android:initialLayout="@layout/news_widget"
android:minHeight="40dp"
android:minWidth="300dp"
android:previewImage="@android:drawable/ic_menu_add"
android:resizeMode="horizontal|vertical"
android:updatePeriodMillis="2700000"
android:widgetCategory="home_screen">
</appwidget-provider>
但是我得到的结果是这样的,在 minHeight 上有小部件:
很明显,我的布局中一个元素的高度与屏幕上一个网格行的高度有很大不同。
我做错了什么或者解决我的问题的规范方法是什么?
【问题讨论】: