I try to achieve a 16:9 aspect ratio on a view with the PercentRelativeLayout
.
So I have put this line in my build.gradle file: compile 'com.android.support:design:23.0.1'
I use this layout:
<android.support.percent.PercentRelativeLayout
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="wrap_content">
<ImageView
android:layout_width="match_parent"
app:layout_aspectRatio="178%"
android:scaleType="centerCrop"/>
</android.support.percent.PercentRelativeLayout>
Problems:
- Android Studio warn me with:
'layout_height' should be defined
for theImageView
. - When I run my project I got :
Error:(15) No resource identifier found for attribute 'layout_aspectRatio'
.
So what's wrong ?
Now with both PercentFrameLayout and PercentRelativeLayout being deprecated in 26.0.0, you can start using ConstraintLayout.
This blog article explains how to achieve a 16:9 aspect ratio for ImageView using ConstraintLayout, but it can be applied to any view.
It appears you're using the wrong dependency in an attempt to include the Percent Support Library.
The correct one (and latest version) is:
com.android.support:percent:23.1.0
In other words, the declared dependency should look like this in your gradle file:
compile 'com.android.support:percent:23.1.0'
With the correct dependency you still had the warn
'layout_height' should be defined
I used android:layout_height="0dp" or android:layout_width="0dp" to avoid it.
<View
android:layout_height="0dp"
android:layout_width="0dp"
app:layout_aspectRatio="75%"
app:layout_widthPercent="100%"
/>
you can even use android:layout_height="wrap_content" in case of the content will be bigger that the layout_aspectRatio
There is a g+ post here: https://plus.google.com/+AndroidDevelopers/posts/ZQS29a5yroK that explains how to use this in some depth.
In the comments there's also a discussion about the layout_width/height warning. A Lint filter will be added in a future Android Studio version, but until then you can add a <!-- suppress AndroidDomInspection -->
to suppress the warning, or just ignore it.
来源:https://stackoverflow.com/questions/33415492/how-to-use-layout-aspectratio-in-the-percentrelativelayout