仍然有GridViews的问题

时间:2012-03-23 14:03:57

标签: android gridview screen-size

经过两年的Android开发,我仍然不能100%确定我需要提供哪些资源才能使我的GridView在不同尺寸和分辨率的设备上工作。

我还在学习,例如我最近发现你没有拥有来提供所有屏幕尺寸的每个画面 - 如果你在xhdpi中放置一些东西,那么Android就足够聪明来调整它在大多数情况下飞行 - 但有几个怪癖。例如,如果我尝试使用仅在GridView中的mdpi设备上的drawable-xhdpi bin中定义的drawable,drawable将在视觉上正确调整大小,但它周围的空白将不会 - 这仍然是原始的尺寸。最初我通过强制定义GridView和相关适配器视图的所有方面的维度来解决这个问题,但是它周围有一堆代码气味,所以我手动调整了drawable的大小,将它们放在各自的bin中( drawable-mdpi,drawable-hdpi和drawable-xhdpi)并删除了所有图像尺寸的强制等。

所以我现在有:

    <GridView
        android:id="@id/home_image_grid"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:columnWidth="100dp"
        android:gravity="center"
        android:listSelector="#00000000"
        android:numColumns="auto_fit"
        android:stretchMode="columnWidth"
    >
    </GridView>

并且每个项目的布局是:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_margin="0dip"
          android:gravity="center"
          android:orientation="vertical"
          android:padding="0dip">

    <ImageView
            android:id="@id/home_button_image"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
        />

        <TextView
            android:id="@id/home_button_text"
            android:layout_width="wrap_content"     
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textColor="@color/default_text_colour"
            android:textSize="@dimen/home_button_text"
             />

    </LinearLayout>

到目前为止一直很好......

我正在开发的应用程序我已经差不多完成并且已经在不同设备上进行了一些测试 - 它在正常屏幕尺寸上看起来很好xhdpi,hdpi&amp; mdpi设备。然后我将我的测试扩展到其他设备 - 我正在测试HTC Flyer,这是一个大屏幕尺寸,mdpi - 而gridview现在看起来很垃圾 - 它正确地拾取了很小的mdpi图像。

做一些阅读我发现了 GridView tutorial GridView tutorial,它说你把所有的drawables都放在'drawable'bin中,所以我遵循了这个建议并且再一次看起来垃圾 - 仔细检查(并且实际上已经阅读了示例代码)似乎他们手动设置GridView中每个图像的大小 - 这是我一直在做的事情,这意味着我将不得不为每个设备的排列手动设置图像大小。

所以..我想知道我是否错过了一个技巧 - 我应该采取第一种方法将图像粘贴在我的可绘制文件夹中并手动强制每个清除的大小?我应该为屏幕尺寸和分辨率的所有排列绘制一组新图像吗?

我怎么能保证无论我做什么,它都会在我没有测试过的设备上看起来不错?

无论哪种方式感觉我做错了什么 - 但我无法解决如何在没有麻烦的情况下正确地做到这一点。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我不确定你的意思是“强制每个排列的大小”,但你可以将适当大小的drawable放在以下文件夹中:

  • 抽拉-MDPI
  • 抽拉-大MDPI

每个设备都会从相应的文件夹中选择正确的drawable,您可以为mdpi设备分离普通图像和大图像。

这不能解决你的问题吗?

P.S:drawable文件夹仅用于XML绘图,或者照片不依赖于设备的密度,而不是用于UI的图像。这些将适用于每种分辨率和密度。