在所有设备上将图像定位在同一位置的最佳方法?

san*_*one 7 android dpi android-layout

我已经意识到我不是100%确定定位一些UI元素的最佳方法是什么,以便它出现在所有设备上的同一位置.

到目前为止,这些是选项:

  1. dp为每个设备设置填充
  2. 使View这一形象上面,并改变它的填充为每个设备
  3. Java code从代码集中计算屏幕大小,并以通用方式定位.例如,将图像设置为距离顶部1/5屏幕高度,并根据当前设备的屏幕高度应用此公式.
  4. 与第2点类似,但dp我不是使用固定的,而是使用有layout_weight问题的元素

什么似乎是最好的方式?

有没有更好的方法,我没有在这里提到?

谢谢

Giv*_*ivi 6

两个最佳选择如下:

  1. 在代码中 - 计算屏幕大小并使用屏幕的百分比.
  2. 使用layout_weight您的意见和weight_sum父视图.

代码方法的一个小例子 - 假设您希望View恰好是屏幕宽度的25%:

 WindowManager manager = (WindowManager) _context.getSystemService(Activity.WINDOW_SERVICE);
 int screenWidth = manager.getDefaultDisplay().getWidth();
 YOUR_VIEW.getLayoutParams().width = (int) (screenWidth * 0.25);
Run Code Online (Sandbox Code Playgroud)

  • 关于权重方法:是的 - 想法是将屏幕划分为N个部分.然后为父视图设置weight_sum ="N"并设置layout_weight ="N/WHATEVER_YOU_WANT" (3认同)
  • 正如我所说,我宁愿不以代码的方式去做,但我遇到了我别无选择的情况(通常是由设计师的疯狂想法引起的:)).上面的例子只是我为你写的东西.. :) (3认同)