【问题标题】:How to add a Layout如何添加布局
【发布时间】:2015-10-26 03:20:43
【问题描述】:

您好,我想在我的 Activity 中添加一个 LAyout。

到目前为止,我有一个 FrameLayout,我在其中添加了一个 SurfaceView。

现在我想在其上添加另一个布局作为菜单,因此当我单击 Surface View 上的按钮时,我将其设置为可见。

这个布局应该包含一个 Textview 并且应该是可滚动的

1:对于这种方法,最好的布局是什么?我想到了一个动态添加字符串的 Listview

2:如何在代码中实现这一点?

应该是:

可滚动。 应该是一定的 Size:屏幕宽度的一半和屏幕高度的一半 所以它也应该在 screenWidth/4 和 screenHeight/4 的位置 为了实现这一点,我可以在附加到表面视图的 mainThread 中设置这些参数,这样我就可以将所需的参数设置为 Pixel 格式,这没有问题。 当用户在视图之外点击时,它应该会松开焦点,以便我的 surfaceView 再次获得焦点并将 LAyout 设置为 Gone。

所以它应该是这样的:

用户点击按钮以显示菜单 现在用户可以滚动菜单 当他按下后退按钮或在视图之外它应该自行关闭 当有应该显示的新文本时,它应该附加到布局中,以便在用户下次再次单击按钮时显示出来

谢谢

【问题讨论】:

    标签: android android-listview textview


    【解决方案1】:

    1:对于这种方法,最好的布局是什么?我想到了一个 Listview,我可以在其中动态添加 Textviews

    这听起来不错,您可以选择ListViewRecyclerView。您基本上不是动态添加TextViews,而是创建了一个适配器来为您处理视图的创建和回收。

    2:如何在代码中实现这一点?

    创建一个DialogFragment,它是此类具有逻辑的对话的最佳选择。它的生命周期通过FragmentManager 处理,因此您不会遇到屏幕旋转等问题。它允许您设置您需要的任何布局,就像任何其他 Fragment 一样。它将为您放置在中心,因此您不必手动处理。只需设置您想要的对话框大小,它就会看起来很完美。

    当用户在视图之外点击时,它应该会失去焦点,以便我的 surfaceView 再次获得焦点并将 LAyout 设置为 Gone。

    我真的不明白这个。当用户触摸外部时,您是否需要失去焦点但对话框应该关闭?如果是,那么这里已经回答了:

    Allow outside touch for DialogFragment

    如果对话框应该关闭,则无需执行任何操作,默认情况下会这样工作。

    【讨论】:

    • 感谢您的回答,不幸的是,我想避免弄乱碎片......我不能用我设置为可见或不可见的普通视图来做到这一点,我认为这是更少的工作
    • 您可以在没有片段的情况下执行此操作,但它会更复杂.. 1. 您必须处理保存状态和旋转视图 2. 您必须处理后退按钮单击 3. 您将拥有处理外部触摸 4. UI 问题,例如它看起来不像本机对话框,至少提升 5. 所有代码都将转到不好的活动。 6.复杂的活动布局。我看不出这里不使用对话框片段有什么好处
    • 我已经准备好处理旋转和返回按钮了。我在我所有的应用程序中都这样做,所以没关系。我也完全处理所有触摸事件。所有代码都进入一个线程,除了对 Activity 进行初始化之外,我什么都不做(除了必须在 Activity 上完成的代码,但它只是一个 runOnUiThread)
    • 我真的只是想在我的框架布局中添加一个可以显示可滚动列表的视图组 :)
    • 抱歉,我不同意你的观点 :) 我不明白你为什么需要所有这些技巧并避免对话片段。有什么优势吗?看来你已经知道自己想做什么了。那你有什么问题?
    猜你喜欢
    • 2019-04-21
    • 1970-01-01
    • 2018-01-09
    • 2018-07-17
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多