问题标签 [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.
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()检测到!这里发生了什么?
android - 具有两个元素的框架布局
我得到了一个 FrameLayout,它有两个元素,一个 TextView 和一个带有 Backgroundcolor 的 View。Whithin eclips previw 这按预期显示,视图覆盖了 Textview。但是,当我将此布局膨胀到另一个布局时,彩色视图就会消失。有什么建议么?
这是包含的代码
android - 在Android中将包含webview的FrameLayout旋转90度
我正在尝试在android中旋转包含webview的框架布局,这是我的代码:
它可以旋转......但问题是webview中的任何可点击区域都不会根据布局的旋转坐标系改变它的坐标。webview的滚动也被反转了
有关如何解决此问题的任何建议
android - 在Android中将图像定位在具有特定坐标的图像之上
最终目标:根据测试结果让速度计式指针在表盘上移动。
当前问题:目前,我已使用 FrameLayout 将针头放在快速拨号的顶部作为单独的图像。我一直在网上寻找一种用坐标定位针的方法,这样我就可以将它准确地放在表盘上我想要的位置。我会发布一张图片,但我是论坛的新手,我不允许!
所以简而言之,我可以将图像定位在具有精确坐标的另一个图像上(允许旋转等)吗?我是否以正确的方式解决我的问题?
android - 在我的活动上动态添加片段
我正在使用片段,当我在左侧片段上选择某些内容时,我希望我的主要活动创建一个右侧片段。
所以我这样做是为了在 FrameLayout 上添加我的 Fragment :
但我得到这个错误:
我必须先删除我的 FrameLayout 视图吗?还是另一种看法?怎么做?
android - FrameLayout 中的子项未绘制
我正在我的 Android 应用程序中实现一个功能,用户可以在其中动态添加和删除视图,FrameLayout
并通过使用拖放技术以绝对坐标定位它们。用户通常会加载平面图图像作为背景FrameLayout
,然后添加代表房屋中的灯的按钮并将它们放置在适当的位置。
无论如何,我有一个问题,我需要在加载FrameLayout
时膨胀并添加视图Fragment
。子视图源自 SQLite 数据库中的信息。为了正确定位子视图(取决于方向),我需要考虑FrameLayout
in 的宽度和高度。因此,我无法onCreateView()
在我的Fragment
.
FrameLayout
实际上是一个(为简单起见,DragArea
我仍将这个对象称为FrameLayout
),一个自定义类扩展FrameLayout
. 为了在Fragment
计算宽度/高度时获得回调,我重写onSizeChanged
了FrameLayout
调用Fragment
.
这是奇怪的事情。如果我在我的回调方法中Fragment
创建视图并调用FrameLayout.invalidate
似乎什么都没有发生。检查说视图已添加到视图中,FrameLayout
但没有看到。如果我打开hierarchyviewer 并按Load View Hierarchy 会出现视图。所以这里似乎有一个副作用,它会吸引人们的意见。我试图调用FrameLayout.requestLayout()
并通过执行逻辑来确保它在 UI 线程上运行,getActivity().runOnUiThread()
但这没有任何区别。
但!如果我将逻辑放在内部onPostExecuted()
(否则无用)AsyncTask
,则会绘制视图。
请参阅下面的代码,其中将在评论中进一步描述。回调方法被命名onWidthAvailable()
并从FrameLayout.onSizeChanged()
.
我还试图invalidate()
在以后的任意时间点打电话,但没有运气。
android - Android:在 FrameLayout 中翻译动画后无法单击底部的 TextView
我有一个 FrameLayout,其中放置了两个相同的 TextView。我希望能够将第一个视图翻译到左侧(我已经完成并且正在像魅力一样工作)。但是我希望能够单击它下面的 TextView 来执行操作。
当我尝试单击底部的 TextView 时,顶部的 TextView 会再次被单击。我有一种感觉,这是因为动画的渲染方式和实际 x,y 位置的变化没有生效。
这就是我到目前为止所拥有的。
编码:
android - Android GestureDetector 无法使用 FrameLayout 检测 onScroll 事件
我有一个扩展 FrameLayout 的视图,需要通知它上面的滚动事件。此视图有一个实现 GestureDetector 的类的实例,该实例由覆盖的 onInterceptTouchEvent 方法调用。
唯一的问题是当我尝试滚动时可能会调用 onDown 和 onLongPress 方法,但实际的 onScroll 方法永远不会被调用。
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!
android - 方向更改时的 ImageView - Drawable 忽略 setBounds 并返回到原始状态
编辑 3:
出于历史原因,我保留下面的原始问题。但是,我发现这个问题并不是孤立的FrameLayout
。因此,更新了标题。
我没有用更多代码过度拥挤这篇文章,而是创建了一个示例项目来演示这个问题;并将其上传到 Google Project Hosting。
这个问题的总结是这样的:
具有特定边界的纵向可绘制对象,在改变方向并返回纵向时,不保留设置的边界。相反,它恢复到原来的界限。尽管强行设置了方向变化的明确界限,但这仍然存在。请注意,您稍后在 Click 等上设置的任何界限都会被遵守。
我还上传了一个版本的应用程序,其中包含 2 个单独的活动来说明该问题。
- 简单的普通活动只是说明了这个问题。
- 使用自定义
BitmapDrawable
的活动ImageView
- 每当更改边界时,都会打印以记录。
第二个版本清楚地表明,即使我在 Drawable 上设置了界限,这些界限在onBoundsChange()
.
原始问题:
我正在使用一个FrameLayout
2 ImageView
s 堆叠在另一个之上来显示“电池状态”图形。这是纵向模式。在横向模式下,我显示不同的布局(图表)。
我的问题是——假设正在显示电池状态——比如 30%。现在,我旋转屏幕并显示图表。当我回到纵向时,电池图形会回到原来的位置(即“满”)。
我已经尝试了各种各样的事情来试图弄清楚发生了什么。调试显示“顶部”图形的边界确实按预期设置。所以这似乎是一个失效问题。我正在展示 2 个类和 2 个布局 XML(均已简化)的代码,这有助于重现该问题。还附加了用于 ImageViews 的占位符 PNG。
任何人都可以发现错误吗?要重新创建问题,请运行应用程序,然后单击“更新”按钮。图形将被“填充”到一定程度。然后,切换到横向,然后再回到纵向。该图形不记得其先前的值。
活动:
肖像.xml:
值指示符.java
indicator.xml(自定义视图中使用的 FrameLayout 的 XML)
Landscape.xml(虚拟占位符 - 足以重新创建问题)
AndroidManifest.xml 片段:
编辑
我还尝试调用setPercent()
并传入保存的值displayPortraitView()
- 基本上每当我们回到纵向模式时强制更新到已知状态。仍然没有运气。请注意,日志告诉我可绘制对象的边界是正确的。我无法弄清楚为什么没有发生失效。
编辑2:
- 在 ValueIndicator.java 中,我引入了一个成员变量
mPercent
,它始终存储最后一个已知的百分比值。 - 更新了
setPercent()
代码以更新成员变量mPercent
;然后调用updateIndicateUi()
方法。 updateIndicatorUi()
(现在是一种public
方法)现在使用状态(即mPercent
)来完成它的工作。- 每当我们回到纵向模式时,我都会调用
updateIndicatorUi()
. 这会强制电池图形自行更新。
我还更新了代码以反映这些更改。
这个想法是每当我们从横向模式返回纵向模式时强制重绘和无效。再次 - 我确实看到根据需要设置了可绘制的电池“内容”的边界,但 UI 拒绝跟上步伐。