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 the ImageView
.
- 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.
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
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'
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.