Android:解决打开activity之后 屏幕初始位置不是顶部问题

使用scrollView.scrollTo(0,0);没有效果,
因为scrollView里有ListView和其他的控件,只要使listview上面的其中一个控件获得焦点,页面自然就到顶部了。
代码如下:
textView.setFocusable(true);
textView.setFocusableInTouchMode(true);
textView.requestFocus();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要在 Android 中的多个 Activity 中弹出对话框并将其置于顶部,可以使用以下步骤: 1. 创建一个单独的类来管理对话框的显示和隐藏。 2. 在该类中,创建一个无界面的 Activity 作为对话框容器,并将其属性设置为对话框样式。 3. 在 Activity 中,使用 WindowManager 将该对话框容器添加到 WindowManager 中。 4. 在需要显示对话框的 Activity 中,调用对话框管理器类的方法来显示对话框。 以下是一个示例代码: 1. 创建一个名为 DialogManager 的单例类: ``` public class DialogManager { private static DialogManager instance; private Dialog dialog; private WindowManager windowManager; private WindowManager.LayoutParams layoutParams; private DialogManager() { // 初始化对话框容器 Context context = MyApplication.getInstance(); View dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_layout, null); dialog = new Dialog(context, R.style.DialogStyle); dialog.setContentView(dialogView); // 初始化 WindowManager 和 LayoutParams windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); layoutParams = new WindowManager.LayoutParams(); layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_PANEL; layoutParams.format = PixelFormat.TRANSPARENT; layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT; layoutParams.gravity = Gravity.CENTER; layoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; } public static DialogManager getInstance() { if (instance == null) { instance = new DialogManager(); } return instance; } public void showDialog() { if (!dialog.isShowing()) { windowManager.addView(dialog.getWindow().getDecorView(), layoutParams); } } public void hideDialog() { if (dialog.isShowing()) { windowManager.removeView(dialog.getWindow().getDecorView()); } } } ``` 2. 创建一个名为 DialogStyle 的样式: ``` <style name="DialogStyle" parent="Theme.AppCompat.Light.Dialog"> <item name="android:windowIsFloating">false</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowAnimationStyle">@style/DialogAnimation</item> </style> <style name="DialogAnimation"> <item name="android:windowEnterAnimation">@android:anim/fade_in</item> <item name="android:windowExitAnimation">@android:anim/fade_out</item> </style> ``` 3. 在需要显示对话框的 Activity 中,调用对话框管理器类的 showDialog() 方法来显示对话框: ``` DialogManager.getInstance().showDialog(); ``` 4. 在 Activity 销毁时,调用对话框管理器类的 hideDialog() 方法来隐藏对话框: ``` @Override protected void onDestroy() { super.onDestroy(); DialogManager.getInstance().hideDialog(); } ``` 请注意,此方法将对话框添加到 WindowManager 中,因此必须在 Activity 销毁时将其从 WindowManager 中删除,以避免内存泄漏。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

两块三刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值