gpt4 book ai didi

android - 三星 Galaxy S4 未对齐操作栏图标

转载 作者:IT王子 更新时间:2023-10-28 23:32:56 26 4
gpt4 key购买 nike

我正在为应用程序实现视觉设计,结果发现 Galaxy S4 未对齐操作栏主页图标,如屏幕截图所示:

enter image description here

截图是在两台设备上使用完全相同的 APK 文件截取的。紫色指引线位于左侧​​ 16dp 处,它对屏幕布局的其余部分非常重要。 S4 又增加了 8dp 左右。这个额外的边距使主页图标看起来很不合适。

我尝试了许多其他不同分辨率/密度的三星手机(Galaxy S3、Galaxy S4 Mini、Galaxy Ace),这些手机都以 16dp 正确对齐图标。

我将其归结为 Android fragment 化并继续前进,但 Galaxy S4 的市场份额如此之大,以至于我无法真正忽视这个问题。有没有其他人遇到过这个问题并找到了解决方法?

最佳答案

这段代码是不言自明的。它首先检查当前设备是否为三星 Galaxy S4 型号,基于 list found here .如果是,则根据 ActionBar 的布局和 home ImageView 查找相关的 View > 在层次结构中的相对位置。然后将它们向左移动(正)offset 参数。它还检查是否显示了自定义 View,并对其进行转换。唯一的变化是 Views 的 x 坐标,因此它应该适用于任何主题或样式。

private static final String SAMSUNG = "SAMSUNG";
private static final String[] S4_MODELS = {
"GT-I9506", "GT-I9505G", "SGH-I337", "SGH-M919",
"SCH-I545", "SPH-L720", "SCH-R970", "GT-I9508",
"SCH-I959", "GT-I9502", "SGH-N045", "SGH-I337M",
"SGH-M919V", "SCH-R970X", "SCH-R970C"
};

private void adjustGalaxyS4(int offset)
{
if (isGalaxyS4())
shiftHomeView(offset);
}

private boolean isGalaxyS4()
{
String manufacturer = Build.MANUFACTURER.toUpperCase();
String model = Build.MODEL.toUpperCase();

if (SAMSUNG.equals(manufacturer) && !TextUtils.isEmpty(model))
{
for (String m : S4_MODELS)
if (model.contains(m))
return true;
}

return false;
}

private void shiftHomeView(float offset)
{
try
{
View grandParentView = (View) ((View) findViewById(android.R.id.home).getParent()).getParent();
View upView = ((ViewGroup) ((ViewGroup) grandParentView).getChildAt(0)).getChildAt(0);

grandParentView.setX(grandParentView.getX() - offset);
upView.setX(upView.getX() + offset);

if ((getActionBar().getDisplayOptions() & ActionBar.DISPLAY_SHOW_CUSTOM) != 0)
getActionBar().getCustomView().setX(getActionBar().getCustomView().getX() - offset);
}
catch (Exception e)
{
// Fail silently
}
}

关于android - 三星 Galaxy S4 未对齐操作栏图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24240439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com