如何对listView项使用PercenRelativeLayout

时间:2016-03-03 15:31:16

标签: android listview android-percentrelativelayout

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

这里是列表项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

上有一个示例项目

2 个答案:

答案 0 :(得分:0)

我已将此问题打开谷歌。 答案是

  

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

     

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

     

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

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

答案 1 :(得分: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);