如何修复"vertical alignment ListView in widget - the size of height sometimes less than text content"



我正在创建小部件,我在相对布局中使用ListView,其中父级是线性布局。

显示列表视图几乎总是正确的!,但有时列表视图的高度小于实际wrap_content。示例在屏幕截图上可见。

列表视图的高度随机为"正常"或"错误"。我找不到,问题在哪里。

我的目的是让列表视图在小部件中垂直居中。

二手 RemoteViewsService.RemoteViewsFactory.

您可以检查附加的 XML 文件。

和屏幕截图,以便更好地了解问题。 合适高度 |高度错误


小部件.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayoutWidgetScrollable"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="2dp"
android:layout_marginTop="2dp"
android:layout_marginRight="2dp"
android:layout_marginBottom="2dp"
android:orientation="horizontal"
android:padding="@dimen/widget_margin">
<ImageView
android:id="@+id/imageViewVectorArrowL"
android:layout_width="24dp"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal|center_vertical"
android:contentDescription="@string/share_quote_button" />
<RelativeLayout
android:id="@+id/relativeLayoutWidgetScrollable"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<ListView
android:id="@+id/listViewWidget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foregroundGravity="center_vertical"
android:layout_centerInParent="true"
android:layout_margin="0dp"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
android:divider="@null"
android:dividerHeight="0dp"
android:scrollbars="none"
/>
<!--sibling with empty view for ListView-->
<TextView
android:id="@+id/empty_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"/>
</RelativeLayout>
<ImageView
android:id="@+id/imageViewVectorArrowR"
android:layout_width="24dp"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal|center_vertical"
android:contentDescription="@string/share_quote_button" />
<ImageView
android:id="@+id/imageViewVectorButton"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="top|center_vertical"
android:layout_marginStart="-24dp"
android:layout_marginLeft="-24dp"
android:contentDescription="@string/share_quote_button" />
<ImageView
android:id="@+id/imageViewVectorButtonTts"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_gravity="bottom|center_vertical"
android:layout_marginStart="-24dp"
android:layout_marginLeft="-24dp"
android:contentDescription="@string/share_quote_button" />
</LinearLayout>

行.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:gravity="center_horizontal|center_vertical"
android:orientation="vertical">
<TextView
android:id="@+id/textViewFortudeInListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="true"
android:contentDescription="@string/widget_initializing_title"
android:gravity="center_horizontal"
android:text="@string/widget_initializing_title"
android:textColor="@color/black"
android:textSize="16sp" />
<TextView
android:id="@+id/textViewAuthorInListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="true"
android:contentDescription="@string/widget_initializing_title"
android:gravity="end"
android:textColor="@color/black"
android:textSize="16sp" />
</LinearLayout>

我希望显示列表视图始终获得正确的列表视图高度大小,因为文本大小相等。实际上,应该是这样。

谢谢

Vojtech,谢谢。

我将SystemClock.sleep添加到下面的代码中,它工作了。

public RemoteViews getViewAt(int position) {
SystemClock.sleep(50);
RemoteViews views = new RemoteViews(mContext.getPackageName(), R.layout.widget_row);

再次感谢!

最新更新