平板电脑和手机上的ImageView看起来一样

时间:2016-11-21 04:20:48

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

我有一个在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>

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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。

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

您可以定义根据配置而变化的维度,而不是使用多个布局。布局位于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维度,当您的应用程序在不同的屏幕尺寸上运行时,它将看到相应的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%的屏幕宽度和一个方形视图,您将需要摆弄ImageView的scaleTypeadjustViewBounds属性或编写一些Java代码。