【问题标题】:ImageView to look the same on tablet and phoneImageView 在平板电脑和手机上看起来一样
【发布时间】:2016-11-21 04:20:48
【问题描述】:

我有一个位于 cardview 内的 imageview 来创建圆形图像。在智能手机上,我希望图像的大小为 250 和 250dp,假设这大约是我手机宽度的 80%。

在平板电脑上,我希望图像约为平板电脑宽度的 80%,并且高度也必须与宽度匹配。实现它的最佳方法是什么。谢谢?

以下是我手动输入 250dp 的宽度和高度的代码,这在智能手机上看起来不错,但对于平板电脑来说太小了。

<android.support.v7.widget.CardView
    android:id="@+id/cardView"
    android:layout_width="250dp"
    android:layout_height="250dp"
    android:elevation="12dp"
    app:cardCornerRadius="125dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:innerRadius="0dp"
    android:shape="ring"
    android:thicknessRatio="1.9"
    android:layout_marginTop="20dp">
    <ImageView
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:id="@+id/image_album_art"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true">
    </ImageView>
</android.support.v7.widget.CardView>

【问题讨论】:

    标签: android android-layout android-imageview android-image android-tablelayout


    【解决方案1】:

    Android 旨在让这一切变得简单。如果您希望根据设备配置(即屏幕大小)更改资源,请在特定目录中定义该资源:

    res/layout-sw720dp - large (9"-10") tablets
    res/layout-sw600dp - small (7"-8") tablets
    res/layout - all other devices
    

    当您将-sw600dp 附加到目录名称时,这意味着“最小宽度 600 dp”。这意味着该目录适用于屏幕宽度为 600dp 或更大的设备。 “最小宽度”是指屏幕的哪一侧更小,因此无论是纵向还是横向,1067dp x 600dp 的屏幕都算作最小宽度为 600dp。

    您可以为每个配置制作整个布局文件的副本,并将其放在上述每个目录中。但是,如果除了视图大小之外所有文件都相同,那么您将有很多重复的代码。如果您需要进行更改,则必须在所有三个文件中进行更改,这可能会导致错误。

    您可以定义一个根据配置而变化的维度,而不是拥有多个布局。布局进入res/layout/,尺寸进入res/values/

    创建一个新的 XML 文件 dimensions.xml 并将其放在 res/values 目录中。像这样向它添加一个新的维度:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <dimen name="album_art_size">250dp</dimen>
    </resources>
    

    这将是手机将看到的文件。

    然后,再创建两个values 目录并将最小宽度限定符附加到它们,这样您就有res/valuesres/values-sw600dpres/values-sw720dp。将dimensions.xml 复制到这两个新目录中。然后,您可以修改每个文件中的album_art_size dimen,当您的应用在不同的屏幕尺寸上运行时,它会看到相应的 dimensions.xml 文件。

    最后要做的是将您的布局指向您刚刚创建的album_art_size 维度。将250dp 替换为@dimen/album_art_size

    android:layout_width="@dimen/album_art_size"
    android:layout_height="@dimen/album_art_size"
    

    这将允许您为每个设备类别选择特定的尺寸,这应该让您足够接近 80% 的屏幕尺寸目标。如果您需要正好 80% 的屏幕宽度和方形 View,则需要调整 ImageView 的 scaleTypeadjustViewBounds 属性或编写一些 Java 代码。

    【讨论】:

      【解决方案2】:

      你可以做的是创建一个布局类型为大的文件夹,即布局大,然后从布局文件夹中复制布局并将其粘贴到布局大文件夹中,然后根据平板电脑的屏幕大小设置高度和宽度即可能是 450dp 左右,请检查一下!

      【讨论】:

        猜你喜欢
        • 2023-04-07
        • 2017-12-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        • 1970-01-01
        • 2020-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多