小编HeM*_*odd的帖子

Android - 如何使用视图制作复杂的标签式应用

关于Stack Overflow的第一个问题,如果它没有很好地形成则道歉.

我正在开发一个相对复杂的选项卡式的应用程序,并且已经有了基本建立起覆盖信息,敬请说的ActivityGroup和TabActivity已被弃用之前,优选的模式是使用视图.

我在使用视图方面没有遇到任何问题,这是关于体系结构而不是语法的问题(这就是为什么我没有发布任何代码).具体来说,我应该如何重组应用程序以使用视图而不是Intent启动的活动.

该应用有五个选项卡; 两个持有单一布局,没有问题.其他三个选项卡正在运行具有2-5个不同活动的ActivityGroup(即运行设置活动的选项卡,其中单击每个视图会启动一个处理该特定设置的新活动,按后退按钮可返回更广泛的设置活动/视图).如果我将每个Tab保持为TabActivity,那么将这些内部转换更改为视图仍然相当容易,而不是单独的活动.

主要问题是使用ONLY视图,根本没有TabActivity/Activity组.我所做的绝大多数研究都是讨论是否使用"活动"或"视图",或者是否使用特定语法.我无法清楚地了解如何实际转换到整个应用程序中的视图.

  1. 如果我这样做,整个应用程序现在不会在一个Activity中运行 - 一个托管标签布局的活动?

  2. 如果(1)为真,如何管理?尽管不推荐使用ActivityGroup,但所有Android文档似乎仍然表明,对于功能的各个方面,最好使用单独的活动 - 这是有道理的.Android开发团队是否只是决定堆栈和设备的成本使TabActivity实现无效?

  3. 如果应用程序在一个Activity中运行,该Activity管理每个选项卡的不同视图(然后在必要时在一个选项卡中包含不同的视图),我是否应该使用一个巨大的onClick方法来处理来自任何可点击视图的所有点击,处理输入基于哪个视图是否有效?或者我应该以编程方式注册和取消注册我的所有听众?

  4. 使用单个Activity,任何点击侦听器或任何广播接收器都不会一直运行,即使在不必要的情况下也会消耗资源吗?

  5. 使用单个Activity,后退按钮将从其功能中的任何位置退出整个应用程序.如果我正在使用视图,我是否不得不一直覆盖onBackPressed()并仔细管理应用程序行为以强制它"像Android应用程序一样"?

  6. 我觉得这完全错了吗?当我应该采用完全不同的设计方法来使用制表符和视图时,我可能无意中尝试使用视图重新创建ActivityGroup和TabActivity功能.

当谷歌的人们说我们不再将活动当作标签时,马克墨菲先生如此强烈赞同,我倾向于相信.我根本无法研究一种切换方式,而无需手动重新创建大量的Activity功能(可能包括各种脏黑客).

任何愿意解决这种模糊和被覆盖的主题的人都要提前感谢.

architecture tabs android views

7
推荐指数
1
解决办法
2362
查看次数

Android - 如何禁用ScrollView和所有孩子

  • 编辑清楚

我觉得这个问题已经有了答案,但我找不到答案.

我的布局中有一个ScrollView,它包含各种可点击的视图.

在特定条件下,我想禁用ScrollView及其所有子项的点击和事件.

以下没有帮助:

ScrollView.setEnabled(false)
ScrollView.setClickable(false)
ScrollView.setOnTouchListener(null)
Run Code Online (Sandbox Code Playgroud)

以及:

(parent view of the ScrollView).requestDisallowInterceptTouchEvent()
Run Code Online (Sandbox Code Playgroud)

我用以下代码创建了一个自定义ScrollView:

public class StoppableScrollView extends ScrollView
{
    private static boolean stopped = false;

    public StoppableScrollView(Context context)
    {
        super(context);
    }

    public StoppableScrollView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev)
    {
        if(stopped)
        {
            return true;
        }
        else
        {
            super.onInterceptTouchEvent(ev);
            return false;
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev)
    {
        if(stopped)
        {
            return true;
        }
        else
        {
            super.onTouchEvent(ev);
            return false;
        }
    }

    public static …
Run Code Online (Sandbox Code Playgroud)

android scrollview

2
推荐指数
1
解决办法
2766
查看次数

标签 统计

android ×2

architecture ×1

scrollview ×1

tabs ×1

views ×1