4

我正在尝试在 ListView 中使用PercenRelativeLayout 它不起作用,高度和宽度百分比被忽略,并且列表视图中没有显示任何内容。它仅适用于棉花糖

这是列表项 xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.percent.PercentRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
<ImageView
    android:background="#d20404"
    android:id="@+id/test_image_id"
    android:layout_width="match_parent"
    android:layout_height="300dp" />

<TextView
    android:background="#000"
    android:text="sfgfashdsfg"
    android:layout_below="@+id/test_image_id"
    app:layout_heightPercent="50%"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

</android.support.percent.PercentRelativeLayout>

我在github上有一个示例项目

4

2 回答 2

0

我已经向谷歌打开了这个问题。答案是

您的 ListView 行项的高度未充分指定。

第一个孩子说它想占行高的 60%(注意这是 heightPercent 而不是 aspectRatio),第二个孩子说它想占行高的 10%。但没有什么能告诉 ListView 整行想要多高。所以它最终的高度为0。

请注意,height=match_parent 的语义在 ListView 行中不起作用,如果这适用于任何一个特定的 Android 平台版本(无论您可以说多少它起作用),这纯粹是偶然的。

https://code.google.com/p/android/issues/detail?id=202479

于 2016-03-08T08:38:17.737 回答
0

我在使用 android K 和 android L 时遇到了同样的问题。

百分比布局在 android M 之前无法正常工作。原因是它们取决于在测量步骤中传递的尺寸提示。在 android M 之前,大多数布局都会提供大小提示 0。

将您的百分比相对布局转换为相对布局,并根据您的设备高度以编程方式设置视图的高度。

这不是一个非常优雅的解决方案,但它对我有用。

XML 代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<ImageView
    android:id="@+id/test_image_id"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:background="#d20404" />

<TextView
    android:id="@+id/textview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/test_image_id"
    android:background="#000"
    android:text="sfgfashdsfg" />

</RelativeLayout>

Java 代码:

// to get the height of the screen
int height = getWindowManager().getDefaultDisplay().getHeight();

// to set height to each textview to 50% of screen
textView1.getLayoutParams().height = (int) (height * 0.50);
于 2017-12-27T09:42:18.083 回答