如何在PercentRelativeLayout中使用layout_aspectRatio?
How to use layout_aspectRatio in the PercentRelativeLayout?
我尝试在 PercentRelativeLayout
的视图上实现 16:9 纵横比。
所以我将这一行放在我的 build.gradle 文件中:compile 'com.android.support:design:23.0.1'
我使用这个布局:
<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>
问题:
- Android Studio 警告我:
'layout_height' should be defined
对于 ImageView
。
- 当我 运行 我的项目时,我得到了:
Error:(15) No resource identifier found for attribute 'layout_aspectRatio'
。
所以怎么了?
看来您在尝试包含 Percent Support Library 时使用了错误的依赖项。
正确的(和最新版本)是:
com.android.support:percent:23.1.0
换句话说,声明的依赖项在您的 gradle 文件中应该如下所示:
compile 'com.android.support:percent:23.1.0'
在正确依赖的情况下,你仍然有警告
'layout_height' should be defined
我使用 android:layout_height="0dp" 或 android:layout_width="0dp" 来避免它。
<View
android:layout_height="0dp"
android:layout_width="0dp"
app:layout_aspectRatio="75%"
app:layout_widthPercent="100%"
/>
你甚至可以使用 android:layout_height="wrap_content" 以防内容比 layout_aspectRatio
大
这里有一个 g+ post:https://plus.google.com/+AndroidDevelopers/posts/ZQS29a5yroK 深入解释了如何使用它。
在评论中也有关于 layout_width/height 警告的讨论。将来的 Android Studio 版本中将添加一个 Lint 过滤器,但在那之前您可以添加一个 <!-- suppress AndroidDomInspection -->
来抑制警告,或者忽略它。
现在 PercentFrameLayout 和 PercentRelativeLayout 在 26.0.0 中被弃用,您可以开始使用 ConstraintLayout。
此 blog article 解释了如何使用 ConstraintLayout 为 ImageView 实现 16:9 纵横比,但它可以应用于任何视图。
我尝试在 PercentRelativeLayout
的视图上实现 16:9 纵横比。
所以我将这一行放在我的 build.gradle 文件中:compile 'com.android.support:design:23.0.1'
我使用这个布局:
<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>
问题:
- Android Studio 警告我:
'layout_height' should be defined
对于ImageView
。 - 当我 运行 我的项目时,我得到了:
Error:(15) No resource identifier found for attribute 'layout_aspectRatio'
。
所以怎么了?
看来您在尝试包含 Percent Support Library 时使用了错误的依赖项。
正确的(和最新版本)是:
com.android.support:percent:23.1.0
换句话说,声明的依赖项在您的 gradle 文件中应该如下所示:
compile 'com.android.support:percent:23.1.0'
在正确依赖的情况下,你仍然有警告
'layout_height' should be defined
我使用 android:layout_height="0dp" 或 android:layout_width="0dp" 来避免它。
<View
android:layout_height="0dp"
android:layout_width="0dp"
app:layout_aspectRatio="75%"
app:layout_widthPercent="100%"
/>
你甚至可以使用 android:layout_height="wrap_content" 以防内容比 layout_aspectRatio
大这里有一个 g+ post:https://plus.google.com/+AndroidDevelopers/posts/ZQS29a5yroK 深入解释了如何使用它。
在评论中也有关于 layout_width/height 警告的讨论。将来的 Android Studio 版本中将添加一个 Lint 过滤器,但在那之前您可以添加一个 <!-- suppress AndroidDomInspection -->
来抑制警告,或者忽略它。
现在 PercentFrameLayout 和 PercentRelativeLayout 在 26.0.0 中被弃用,您可以开始使用 ConstraintLayout。
此 blog article 解释了如何使用 ConstraintLayout 为 ImageView 实现 16:9 纵横比,但它可以应用于任何视图。