How to use PercenRelativeLayout for listView item

回眸只為那壹抹淺笑 提交于 2019-12-23 12:53:34

问题


I'm trying to use PercenRelativeLayout into ListView, but it doesnot works, height and width percents are ignored and nothing were showing into the listview. it works only for marshmallows.

here is list item 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>

I have a sample project on github


回答1:


I have opened this issue to google. The answer were

The height of your ListView row item is insufficiently specified.

The first child says it wants to take 60% of the row height (note that this is heightPercent and not aspectRatio), and the second child says it wants to take 10% of the row height. But nothing tells ListView how tall the entire row wants to be. So it ends up being with height 0.

Note that the semantics of height=match_parent do not work in ListView rows, and if this works in any one particular Android platform version (for however much you can say it works), it is purely incidental.

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




回答2:


I encountered the same problem with android K and android L.

The percent layout won't work correctly before android M. The reason is that they depend on the size hint being delivered in the measuring step. Before android M most layouts would provide size hint 0.

Convert your percent relative layout to relative layout and set the height of the views programmatically according to your device height.

This is not a very elegant solution but it worked for me.

XML Code:

<?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 Code:

// 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);


来源:https://stackoverflow.com/questions/35776335/how-to-use-percenrelativelayout-for-listview-item

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!