当前位置: 首页 > 知识库问答 >
问题:

Android 视图是否可以具有纵横比,水平填充父视图并在父视图居中?

高胜
2023-03-14

我正在尝试在RecyclerView的行之间嵌入图像(作为另一个ViewType/ViewHolder)。所述图像必须具有9:5的宽高比,最大高度为600px,因此在较大的手机或平板电脑上不会变得巨大,因此,如果由于宽高比调整大小,其大小与父宽度不匹配,则必须水平居中。

在没有自定义代码的情况下,这可以实现吗?我尝试了 ConstraintLayout 和 PercentFrameLayout,但两者似乎都忽略了 android:maxHeight 标准。

共有1个答案

融唯
2023-03-14

您可以使用<code>ConstraintLayout</code>或使用指南来实现这一点。将您的指南<code>600px</code>分开,并将<code>图像视图</code>约束到指南:顶部和底部。这些约束将防止图像增长超过600px。下面是一个视频,演示了当我上下移动底部指导线时会发生什么。下面是布局的XML。

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.myapplication.MainActivity">

    <android.support.constraint.Guideline
        android:id="@+id/guidelineTop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_begin="0px" />

    <android.support.constraint.Guideline
        android:id="@+id/guidelineBottom"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_begin="600px" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_margin="0dp"
        app:layout_constraintBottom_toTopOf="@+id/guidelineBottom"
        app:layout_constraintDimensionRatio="9:5"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guidelineTop"
        app:srcCompat="@mipmap/ic_launcher"/>

</android.support.constraint.ConstraintLayout>
 类似资料:
  • 与这里的问题类似,但有一些关键的区别。最值得注意的是,在最新的支持库发布之前,公认的答案是有效的。 以下是自定义视图布局: 现在,当您尝试设置自定义视图时: 所以,我的问题是,有没有一种方法可以让一个自定义视图actionbar使用最新的支持库填充宽度? 编辑在做了更多的测试之后,我发现将targetsdkversion/compilesdkversion设置为19,并使用V7:19.0.1(或V

  • 我在垂直链中有两个视图(视图A、视图B)。viewA的纵横比应始终为1:1,而viewB的高度是动态的(可能为400dp,可能为700dp) 预期结果:当 viewB 的高度太大而无法容纳屏幕中的两个视图时,应减小宽度视图 A(保持纵横比)。 实际结果:视图A的宽度总是与父级匹配,如果视图B的高度太大,视图会离开屏幕边界。 注意:最好使用ConstantsLayout,并且不要有嵌套的视图组。

  • 在我的应用程序中,我有一个滚动视图。在应用程序的生命周期中,我会动态地向滚动视图添加新视图。我可以添加很少问题的视图,但我不能得到正确的尺寸。下面是我想要的布局草图: 在图像中,我有一个尺寸为和的屏幕。它包含一个(或者可能是一个,但我不确定如何使用它),当向它添加视图时,该视图将会增长。我希望添加到视图中的每个项目的宽度等于屏幕高度的五分之一,并且具有匹配的高度。我可以使这工作,如果我硬编码的宽度

  • 我有一个水平ScrollView,它有两个元素:CardView和水平RecycerView。所以,当用户水平滚动时,我希望这两个元素滚动。 我想有这样的东西:Goal,橙色的线是CardView,黄色的线是RecycerView。当用户滚动时,两个元素滚动,如下所示:Scrolled Goal。 现在在我的应用程序中,当用户滚动时,只有RecycerView滚动。CardView保持在他的位置。

  • 我试图建立自定义的水平滚动视图画廊,而不是使用android b/c中的画廊小工具,它在api 16中已被否决。我可以在滚动视图中添加图像,但当用户在水平滚动视图中单击相应的缩略图时,我如何更改较大的图像视图。这是代码

  • 我一直在使用View Pager的图片幻灯片,但是我无法使View Pager内部的图像视图填充View Pager内部水平和垂直的完整空间。知道怎么做吗? 我在我的页面适配器中尝试过这个 但还是没有运气:( 我的布局 null 我的PageAdapter