我是 Android 开发新手。我正在考虑创建一个示例启动器应用程序来替换 Android 默认启动器。我已经创建了这个启动器。但我面临几个问题:
1. 单击“应用程序”按钮后,我将显示设备上安装的所有应用程序。但应用程序图标的大小不同。我尝试为它们设置最大高度和宽度,但问题仍然存在。
2. 该启动器还包括侧栏。如果我在主屏幕上,我可以从左向右滑动以获取此侧边栏。但是,当我单击“应用程序”按钮时(该按钮会启动新活动以显示设备上安装的应用程序),现在如果我尝试在该屏幕上恢复侧边栏,它将无法工作。这意味着,侧边栏与主屏幕绑定。如何使其可以从任何地方、从应用程序列表屏幕或任何其他应用程序屏幕进行访问。
我想这些都是常见问题,但我在谷歌上找不到这方面的帮助。有人可以帮忙吗?
谢谢,
凯拉斯
最后我能够解决这个问题。
-
应用程序图标大小
- 在定义ImageView的xml中,将layout_width和layout_height指定为app_icon_size。
图像视图
android:id="@+id/item_app_icon"
android:layout_width="@android:dimen/app_icon_size"
android:layout_height="@android:dimen/app_icon_size"
android:layout_alignParentLeft="true"
-
侧边栏:我不确定这是一种黑客行为还是正确的方法。我遵循了这种方法:
我使用窗口管理器来托管侧边栏布局。并使用窗口布局参数来保持该窗口始终位于任何其他应用程序之上。侧边栏布局只不过是一个绘图布局,默认情况下将其滑入和滑出。
WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
// Shrink the window to wrap the content rather than filling the screen
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
// Display it on top of other application windows, but only for the current user
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
// Dont let it grab input focus
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
// Make underlying application window visible through any transparent parts
PixelFormat.TRANSLUCENT
); drawingLayout = (CustomDrawerLayout) inflater.inflate(R.layout.activity_sidebar, null);
listView = (ListView) drawingLayout.findViewById(R.id.left_drawer);
drawingLayout.setDrawerShadow(R.mipmap.drawer_shadow, GravityCompat.START);
drawingLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener() {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
WindowManager.LayoutParams newParams = new WindowManager.LayoutParams();
newParams.copyFrom(params);
newParams.width = 150;
windowManager.updateViewLayout(drawingLayout, newParams);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
windowManager.updateViewLayout(drawingLayout, params);
}
});
loadApps(((View) drawingLayout).getContext());
loadListView(((View) drawingLayout).getContext());
addClickListener(((View) drawingLayout).getContext());
windowManager.addView(drawingLayout, params);
这正如预期的那样对我有用。但我仍然不确定正确的解决方案。如果您有更好的方法,请告诉我。谢谢!!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)