如何在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>

问题:

所以怎么了?

看来您在尝试包含 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 纵横比,但它可以应用于任何视图。