在Android中缩放可绘制以支持多个屏幕

时间:2014-09-12 22:30:11

标签: java android xml scaling screen-resolution

目前我寻求解决简单情况的方法,这似乎变得棘手。我在Android应用程序中需要7个togglebuttons,这是一个简单的黑色圆圈,但我需要它们在行中并水平填充父级(屏幕)。作为一种资源,我使用一个圆圈的大.jpeg图像。为了让它们以相同的模式填充所有屏幕,我将它们放入LinearLayout并带有

@android:layout_width = "fill_parent";
@android:layout_height = "wrap_content";
@android:weight="70";

重量是70,所以每个按钮都收到10.问题是源图像太大,不幸导致...这个:

(因为我没有足够的信誉发布图片,这里是链接 http://postimg.org/image/f8wvs5si1/

对于少量的代码和这张通过手机拍摄的照片,我没有在eclipse和这个项目的计算机上访问互联网一段时间。我当然尝试在其他可能性上改变layout_height,但它没有用。我也可以在垂直位置上加上一个重量和,但在不同的屏幕上它看起来不一样。 我还尝试在onCreate方法中以编程方式更改高度,

 buttonX.setHeight(buttonX.getWidth());

或对布局做同样的事情,但没有任何帮助

也许问题是dumm,但我很乐意听到一些想法。

1 个答案:

答案 0 :(得分:0)

这是由于屏幕密度的变化。您可以采取以下措施来解决此问题:

  1. 为每个密度使用不同的图像(但我假设您正在寻找其他解决方案)

  2. 使用DisplayMetrics获取屏幕的实际宽度,然后相应地设置宽度/高度。

  3. 此代码:

    buttonX.setHeight(buttonX.getWidth());

  4. 可能不起作用,因为在绘制布局之前调用它,因此宽度不是绘制的宽度。您可以使用ViewTreeObserver解决此问题,例如:

    How can you tell when a layout has been drawn?

    1. 使用像scaleType="centerFit"这样的XML属性。就个人而言,我发现这些令人困惑,因为scaleType属性似乎总是​​表现得与我的行为方式相同。您可能需要尝试不同的解决方案,但有时如果您需要仅支持XML的解决方案,它们会派上用场。