问题标签 [android-framelayout]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
3153 浏览

android - 从 frameLayout 中的surfaceView 调用bringChildToFront() 不起作用?

能不能给一个frameLayout添加一个surfaceView子视图,然后调用bringChildToFront()把另一个子视图带到surfaceView前面?

这是我制作的第一个 android 应用程序,所以请让我知道我的设置是否有意义,或者我是否在错误的地方做错了事情。

  • 我有一个活动,它有一个 FrameLayout。
  • 我有 2 个视图(名为 pauseMenuView 和 mainMenuView),它们只是具有 4 个按钮的视图。这些菜单按钮是通过在我的活动中覆盖 onClick() 来处理的。
  • 我有一个扩展 SurfaceView 的第三个自定义视图(称为 gameView)。这是我目前正在处理关于我的游戏玩法的几乎所有内容(处理触摸事件、绘制图形、动画、碰撞检测)的地方。我有一个单独的线程来控制游戏的状态(暂停、未暂停等)和帧速率。

所以基本上,在玩游戏时,我在屏幕的左上角有一个暂停图标。我正在努力做到这一点,以便当他们触摸该图标时,我的 gameView 的 onTouchEvent 调用bringChildToFront(pauseMenuView) 来显示暂停菜单。但是,目前当我调用bringChildToFront() 或bringToFront() 时,没有任何反应,好像它们没有效果一样。我的游戏视图仍然可见。

这是我活动中的相关代码:

因此,当应用启动时,mainMenuView 被带到最前面,当玩家单击 onePlayerButton 时,会创建一个 gameView 并将其添加到 frameLayout 中,并被带到最前面,然后用户开始玩游戏。

然后,在游戏中,当用户单击我的游戏视图中的暂停图标时,onTouchEvent() 方法会捕获它并执行此操作。(我刚刚公开了我的 pauseMenuView 以便我的 gameView 可以看到它)...似乎我的程序直接进入 mThread.pause() 行并且对前 2 行没有做任何事情...我试过了在这里将gameView设置为不可见,当我这样做时,屏幕完全是黑色的,但是如果暂停菜单可见,我可以单击暂停按钮所在的位置,并且它们实际上确实被我的活动的onClick()检测到!这里发生了什么?

0 投票
1 回答
871 浏览

android - 具有两个元素的框架布局

我得到了一个 FrameLayout,它有两个元素,一个 TextView 和一个带有 Backgroundcolor 的 View。Whithin eclips previw 这按预期显示,视图覆盖了 Textview。但是,当我将此布局膨胀到另一个布局时,彩色视图就会消失。有什么建议么?

这是包含的代码

0 投票
1 回答
2078 浏览

android - 在Android中将包含webview的FrameLayout旋转90度

我正在尝试在android中旋转包含webview的框架布局,这是我的代码:

它可以旋转......但问题是webview中的任何可点击区域都不会根据布局的旋转坐标系改变它的坐标。webview的滚动也被反转了

有关如何解决此问题的任何建议

0 投票
2 回答
1160 浏览

android - 在Android中将图像定位在具有特定坐标的图像之上

最终目标:根据测试结果让速度计式指针在表盘上移动。

当前问题:目前,我已使用 FrameLayout 将针头放在快速拨号的顶部作为单独的图像。我一直在网上寻找一种用坐标定位针的方法,这样我就可以将它准确地放在表盘上我想要的位置。我会发布一张图片,但我是论坛的新手,我不允许!

所以简而言之,我可以将图像定位在具有精确坐标的另一个图像上(允许旋转等)吗?我是否以正确的方式解决我的问题?

0 投票
1 回答
883 浏览

android - 在我的活动上动态添加片段

我正在使用片段,当我在左侧片段上选择某些内容时,我希望我的主要活动创建一个右侧片段。

所以我这样做是为了在 FrameLayout 上添加我的 Fragment :

但我得到这个错误:

我必须先删除我的 FrameLayout 视图吗?还是另一种看法?怎么做?

0 投票
0 回答
866 浏览

android - FrameLayout 中的子项未绘制

我正在我的 Android 应用程序中实现一个功能,用户可以在其中动态添加和删除视图,FrameLayout并通过使用拖放技术以绝对坐标定位它们。用户通常会加载平面图图像作为背景FrameLayout,然后添加代表房屋中的灯的按钮并将它们放置在适当的位置。

无论如何,我有一个问题,我需要在加载FrameLayout时膨胀并添加视图Fragment。子视图源自 SQLite 数据库中的信息。为了正确定位子视图(取决于方向),我需要考虑FrameLayoutin 的宽度和高度。因此,我无法onCreateView()在我的Fragment.

FrameLayout实际上是一个(为简单起见,DragArea我仍将这个对象称为FrameLayout),一个自定义类扩展FrameLayout. 为了在Fragment计算宽度/高度时获得回调,我重写onSizeChangedFrameLayout调用Fragment.

这是奇怪的事情。如果我在我的回调方法中Fragment创建视图并调用FrameLayout.invalidate似乎什么都没有发生。检查说视图已添加到视图中,FrameLayout但没有看到。如果我打开hierarchyviewer 并按Load View Hierarchy 会出现视图。所以这里似乎有一个副作用,它会吸引人们的意见。我试图调用FrameLayout.requestLayout()并通过执行逻辑来确保它在 UI 线程上运行,getActivity().runOnUiThread()但这没有任何区别。

但!如果我将逻辑放在内部onPostExecuted()(否则无用)AsyncTask,则会绘制视图。

请参阅下面的代码,其中将在评论中进一步描述。回调方法被命名onWidthAvailable()并从FrameLayout.onSizeChanged().

我还试图invalidate()在以后的任意时间点打电话,但没有运气。

0 投票
1 回答
2339 浏览

android - Android:在 FrameLayout 中翻译动画后无法单击底部的 TextView

我有一个 FrameLayout,其中放置了两个相同的 TextView。我希望能够将第一个视图翻译到左侧(我已经完成并且正在像魅力一样工作)。但是我希望能够单击它下面的 TextView 来执行操作。

当我尝试单击底部的 TextView 时,顶部的 TextView 会再次被单击。我有一种感觉,这是因为动画的渲染方式和实际 x,y 位置的变化没有生效。

这就是我到目前为止所拥有的。

编码:

0 投票
1 回答
2671 浏览

android - Android GestureDetector 无法使用 FrameLayout 检测 onScroll 事件

我有一个扩展 FrameLayout 的视图,需要通知它上面的滚动事件。此视图有一个实现 GestureDetector 的类的实例,该实例由覆盖的 onInterceptTouchEvent 方法调用。

唯一的问题是当我尝试滚动时可能会调用 onDown 和 onLongPress 方法,但实际的 onScroll 方法永远不会被调用。

0 投票
1 回答
1166 浏览

android - Fragment FrameLayout Animations when GONE

Does anyone know or can give an example how this fragment animation is done when removing a fragments framelayout container so when the container is set to GONE, it just doesnt disapere but instead animates? ie. slide left Thnx!

0 投票
3 回答
3528 浏览

android - 方向更改时的 ImageView - Drawable 忽略 setBounds 并返回到原始状态

编辑 3:

出于历史原因,我保留下面的原始问题。但是,我发现这个问题并不是孤立的FrameLayout。因此,更新了标题。

我没有用更多代码过度拥挤这篇文章,而是创建了一个示例项目来演示这个问题;并将其上传到 Google Project Hosting。

这个问题的总结是这样的:

具有特定边界的纵向可绘制对象,在改变方向并返回纵向时,不保留设置的边界。相反,它恢复到原来的界限。尽管强行设置了方向变化的明确界限,但这仍然存在。请注意,您稍后在 Click 等上设置的任何界限都会被遵守。

我还上传了一个版本的应用程序,其中包含 2 个单独的活动来说明该问题。

  1. 简单的普通活动只是说明了这个问题。
  2. 使用自定义BitmapDrawable的活动ImageView- 每当更改边界时,都会打印以记录。

第二个版本清楚地表明,即使我在 Drawable 上设置了界限,这些界限在onBoundsChange().


原始问题:

我正在使用一个FrameLayout2 ImageViews 堆叠在另一个之上来显示“电池状态”图形。这是纵向模式。在横向模式下,我显示不同的布局(图表)。

我的问题是——假设正在显示电池状态——比如 30%。现在,我旋转屏幕并显示图表。当我回到纵向时,电池图形会回到原来的位置(即“满”)。

我已经尝试了各种各样的事情来试图弄清楚发生了什么。调试显示“顶部”图形的边界确实按预期设置。所以这似乎是一个失效问题。我正在展示 2 个类和 2 个布局 XML(均已简化)的代码,这有助于重现该问题。还附加了用于 ImageViews 的占位符 PNG。

占位符电池框架图形 占位符电池内容图形

任何人都可以发现错误吗?要重新创建问题,请运行应用程序,然后单击“更新”按钮。图形将被“填充”到一定程度。然后,切换到横向,然后再回到纵向。该图形不记得其先前的值。

活动:

肖像.xml:

值指示符.java

indicator.xml(自定义视图中使用的 FrameLayout 的 XML)

Landscape.xml(虚拟占位符 - 足以重新创建问题)

AndroidManifest.xml 片段:


编辑

我还尝试调用setPercent()并传入保存的值displayPortraitView()- 基本上每当我们回到纵向模式时强制更新到已知状态。仍然没有运气。请注意,日志告诉我可绘制对象的边界是正确的。我无法弄清楚为什么没有发生失效。


编辑2:

  1. 在 ValueIndicator.java 中,我引入了一个成员变量mPercent ,它始终存储最后一个已知的百分比值。
  2. 更新了setPercent()代码以更新成员变量mPercent;然后调用updateIndicateUi()方法。
  3. updateIndicatorUi()(现在是一种public方法)现在使用状态(即mPercent)来完成它的工作。
  4. 每当我们回到纵向模式时,我都会调用updateIndicatorUi(). 这会强制电池图形自行更新。

我还更新了代码以反映这些更改。

这个想法是每当我们从横向模式返回纵向模式时强制重绘和无效。再次 - 我确实看到根据需要设置了可绘制的电池“内容”的边界,但 UI 拒绝跟上步伐。