目前我寻求解决简单情况的方法,这似乎变得棘手。我在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,但我很乐意听到一些想法。
答案 0 :(得分:0)
这是由于屏幕密度的变化。您可以采取以下措施来解决此问题:
为每个密度使用不同的图像(但我假设您正在寻找其他解决方案)
使用DisplayMetrics获取屏幕的实际宽度,然后相应地设置宽度/高度。
此代码:
buttonX.setHeight(buttonX.getWidth());
可能不起作用,因为在绘制布局之前调用它,因此宽度不是绘制的宽度。您可以使用ViewTreeObserver
解决此问题,例如:
How can you tell when a layout has been drawn?
scaleType="centerFit"
这样的XML属性。就个人而言,我发现这些令人困惑,因为scaleType
属性似乎总是表现得与我的行为方式相同。您可能需要尝试不同的解决方案,但有时如果您需要仅支持XML的解决方案,它们会派上用场。