如何在PercentRelativeLayout中使用layout_aspectRatio?

时间:2015-10-29 13:24:34

标签: android android-layout android-constraintlayout android-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。{/ 1>} ImageView
  • 当我运行我的项目时,我得到了:Error:(15) No resource identifier found for attribute 'layout_aspectRatio'

那有什么不对?

4 个答案:

答案 0 :(得分:13)

在尝试包含Percent Support Library时,您似乎使用了错误的依赖项。

正确的(和最新版本)是:

com.android.support:percent:23.1.0

换句话说,声明的依赖项在gradle文件中应如下所示:

compile 'com.android.support:percent:23.1.0'

答案 1 :(得分:13)

使用正确的依赖关系,你仍然有警告

  应该定义

'layout_height'

我使用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更大

答案 2 :(得分:3)

这里有一个g +帖子:https://plus.google.com/+AndroidDevelopers/posts/ZQS29a5yroK解释了如何在某种程度上使用它。

在评论中还讨论了layout_width / height警告。未来的Android Studio版本中会添加一个Lint过滤器,但在此之前,您可以添加<!-- suppress AndroidDomInspection -->来禁止警告,或者忽略它。

答案 3 :(得分:2)

现在,在26.0.0中不推荐使用PercentFrameLayout和PercentRelativeLayout,您可以开始使用ConstraintLayout

这个blog article解释了如何使用ConstraintLayout为ImageView实现16:9的宽高比,但它可以应用于任何视图。