在我的App中,我使用
动态指定几个元素的宽度TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, mycontext.getResources().getDisplayMetrics());
我还使用了一些其他元素,其宽度在dp术语的布局xml中指定。
然而,当我在三星Galaxy Grand上运行应用程序时,我发现动态指定的100次下降并不完全等于布局xml中指定的100 dp(略多)。
然而,当我在AVD上测试时,它看起来很好(两个宽度匹配)。
还有其他人遇到过这个问题吗? 任何的想法?
答案 0 :(得分:1)
发现了这个问题。
我在做:
int pixels_unit_five = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, mycontext.getResources().getDisplayMetrics());
然后我将这个值用于不同宽度的视图,如:
android.widget.RelativeLayout.LayoutParams params_item = new RelativeLayout.LayoutParams(pixels_unit_five*20,pixels_unit_five*8 );
android.widget.RelativeLayout.LayoutParams params_item = new RelativeLayout.LayoutParams(pixels_unit_five*10,pixels_unit_five*8 );
等等..
倾角值正在转换为int,并且正在进行小的舍入以适合精确的像素值。这样,当乘以20时,会增加相当大的像素值差异。
通过直接获得精确的倾角值并使用它们来解决它。