问题标签 [viewgroup]

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 投票
1 回答
9596 浏览

android - Android:在自定义视图组中使用带有自定义视图的 onTouchEvent

我有一个自定义视图,我称之为“Node”,它是一个名为“NodeGrid”的自定义 ViewGroup 的子视图。“NodeGrid”类更具体地扩展了RelativeLayout。

我的自定义视图类(“节点”)中有以下代码片段:

问题:

在此代码中设置断点后,似乎仅针对MotionEvent.ACTION_DOWN情况调用onTouchEvent,但对于其他两种情况(“动作向上”或“动作移动”)均未调用。有谁知道可能导致这种情况发生的任何事情?

另外(可能相关):

视图如何添加到 ViewGroup 中是否重要?我注意到除了“addView”之外,还有其他方法可以将子项添加到 ViewGroup,例如“addFocusables”和“addTouchables”。现在我只是使用“addView”将子视图添加到 ViewGroup。

0 投票
2 回答
4330 浏览

android - RelativeLayout:将视图与同级视图组的子视图对齐

我正在尝试使用RelativeLayout和RadioGroup在android中创建一个标签栏,该标签栏有一个指示器,该指示器将滑动以指示RadioGroup中的活动RadioButton。

这些是自定义的单选按钮,实际上是在文本上带有图标的矩形,所有内容居中,使用自定义状态选择器作为背景。

这是我当前的层次结构:

我的想法是,当单击单选按钮时,我会将指示器与所选单选按钮的顶部和底部对齐(并为其设置动画)。但是,它似乎layout_align<Edge>只适用于兄弟元素,不适用于另一个视图组的成员,即我可以对齐 RadioGroup 本身,但不能对齐其中的 RadioButton。

我曾想过将指示器作为 RadioGroup 的成员,但由于 RadioGroup 是 LinearLayout 的扩展,因此似乎没有办法将其放置在给定 RadioButton 的边缘。

谁能想到我如何解决这个问题?或者也许有比我的动画对齐按钮技术更好的解决方案?

更新 在@superjos 的帮助下,我设法很好地解决了这个问题。

我必须给每个按钮一个已知的高度而不是使用wrap_content(不理想,但对于这个项目,它应该可以正常工作)。使指示器高度与按钮高度匹配。确保 RadioGroup 设置为包裹内容并在父视图中垂直居中。将指示器设置为alignToptoRightOfRadioGroup。然后,对于按钮单击侦听器:

0 投票
1 回答
509 浏览

android - 重新绘制有关方向变化的视图

我正在使用 aTextView并且ViewGroup我正在使用它ViewGroup来创建一个类似可滚动 UI 的画廊。它的TextView整个背景都填充了一种颜色。一切工作正常,除了当我将我orientation的从portrait更改为landscape更改portrait,反之亦然时,TextView's原始尺寸保持不变,因此,绘图看起来迷失方向。但是一旦我平移或滚动,它就会重新更正。我的扩展类ViewGroup不处理绘图部分,我尝试了以下方法:

  • 使ViewGroup.
  • 使当前显示的视图无效。
  • 实施onConfigurationChanged(在清单中进行适当的更改)。

我不想在TextView更改配置后重新创建 currentState 的过程。这是我在以下位置添加视图的代码片段ViewGroup:-

0 投票
1 回答
5516 浏览

android - Android:使用 MotionEvent 对自定义 ViewGroup 中的 View 进行拖放定位

在我创建的自定义 ViewGroup 上定位视图元素时遇到问题,特别是在拖放情况下。我的目标是 Android 2.2 及更高版本,所以我不能真正使用 Android 3 中出现的拖放 API。

我的自定义 ViewGroup 称为“NodeGrid”,它扩展了“RelativeLayout”。它的onLayout方法被覆盖,如下所示:

“NodeGrid”的子节点属于“NodeView”类型(如您在上面的代码中所见)。NodeView 只是我创建的一个自定义 View 类。它包含一个名为“DataContext”的成员,它是一个视图模型类,其中包含一些 getter/setter,其中包含有关 NodeGrid 上的 NodeView 实例的位置信息。

我的“NodeView”类捕获用户的触摸事件,因此用户可以简单地将节点拖放到网格上的任何位置。事件处理程序如下所示:

我的问题是被拖动的视图没有像我期望的那样定位在我的“NodeGrid”上。当我拖动它时,x 轴位置似乎是正确的,但 y 轴位置在任何时候都会偏移一些恒定数量的像素。什么会导致这种情况?我尝试使用 getX() 和 getY() 方法而不是 getRawX() 和 getRawY(),但这只会导致情况更糟。

我不确定 getRawX() 和 getRawY() 是返回 px 单位还是 dip 单位给我,所以期待它返回 px 单位,我尝试在将新的 x 和 y 值分配给之前将它们转换为 dip 单位节点,但这只是减少了偏移量,并没有消除它。

什么可能导致我触摸的位置和节点的位置不同?

0 投票
1 回答
1540 浏览

android - android中ViewGroup的addViewInLayout()的行为

我正在创建自定义ViewGroup,我onLayout在其中使用我调用的方法addViewInLayout()ViewGroup但它是View水平添加唯一的。

如何强制它像AndroidView一样垂直添加ListView

寻求帮助。

0 投票
2 回答
1802 浏览

android - Android:将 FEATURE_NO_TITLE 与自定义 ViewGroup 一起使用会在窗口顶部留下空间

我正在尝试创建一个自定义 ViewGroup,并且我想将它与全屏应用程序一起使用。我正在使用“requestWindowFeature(Window.FEATURE_NO_TITLE)”来隐藏标题栏。标题栏未显示,但仍占用窗口顶部的空间。

这是问题的图片

上面的图像是使用以下代码生成的:

完整的 Eclipse 项目在这里

有趣的是,Android 为我的自定义布局提供了这个空间。我将 CustomLayout 设置为我的 Activity 的根布局。在“onLayout”的日志中接收“t = 25”,这就是推动我的布局下降的原因。我不知道我做错了什么,使 Android 成为“t = 25”(这正是标题栏的高度)。

我在 Android SDK 2.1 中运行此代码,但我也发生在 Android 2.2 中。


编辑:如果我将 CustomLayout 类更改为某些默认布局(例如 LinearLayout),空间就会消失。当然,Android SDK 的默认布局不会创建我要创建的布局,这就是我创建一个的原因。

尽管我正在创建的布局有些复杂,但这是我可以创建的最小代码来重现我的布局问题。

0 投票
1 回答
5779 浏览

android - 将视图组添加到视图组

我希望能够以编程方式将视图组添加到另一个视图组。两者都在 xml 中定义如下,以及我的 onCreate 方法:

主.xml:

secondlayout.xml:

创建:

0 投票
2 回答
478 浏览

android - 在 MapOverlay Tapping 上启动新 Activity

我是 Android 新手。我正在构建一个具有 5 个选项卡的选项卡式应用程序。我使用不同的视图组,每个选项卡都有根据需要和子活动的可响应视图组。第一个选项卡是具有不同子活动的 TabGroupHome。TabGroupHome 首先启动 GoogleMapActivity (具有overlayItems)作为其子活动。这些叠加层代表了不同的用户。我从一个 JSONArray 中获取这些用户的数据,该 JSONArray 由服务器上的一个 php 文件返回,该文件具有不同用户的数据。当我启动我的应用程序时,它的外观->

发射视图

它在顶部有一个具有不同按钮的操作栏(例如,列表、配置文件和刷新)。当我单击列表时,它会显示所有用户的列表->

用户名单!& 用户资料!

&当我单击 listItem 时,它会显示上面指出的响应用户的完整配置文件

我坚持的地方是-> ??? 当我点击 MapPin 时,我想显示此用户个人资料...

我的代码是->

我的 HelloItemizedOverlay 类是->

“onTap”中的 FanProfile 与我单击用户列表的 listItem 时调用的活动相同!

上面的代码有效,但它在我的 tabView 上启动视图,它隐藏了我的选项卡...

[这个] http://i.stack.imgur.com/lgT2G.png

我没有得到我犯错或做错的地方。

你的建议对我很有价值!!!

我将不胜感激获得解决此问题的指针或示例代码...

0 投票
7 回答
7474 浏览

android - Android 视图和视图组

在 AndroidViewGroup中继承自View. AViewGroup是一个装有 的容器Views

为什么 Android 的人们将这种关系定义为Inheritance而不是组合。由于ViewGroup包含Views不应该是组合物吗?

0 投票
1 回答
7307 浏览

android - 自定义视图组中的视图未显示

我最近深入研究了创建自定义 ViewGroups 并遇到了一个我无法弄清楚的问题。

我有 2 个 ViewGroups - ViewManager 和 Article

ViewManager 只是在上一篇文章下方布置一篇文章(即像垂直线性布局)

文章安排了几个 TextView 和一个 ImageView,如图所示。创建单个文章并将其添加到 ViewManager 可以正常工作,并且所有内容都会显示,但是当我添加第二个文章时,文章的任何内容都不可见。

说明第二个视图未显示

那么为什么没有 TextViews 或 ImageView 出现(注意蓝色条是用 onDraw() 中的 canvas.drawRect() 绘制的)。我还打印了(通过 logcat)子视图的绑定值(即 getLeft()/Top()/Right()/Bottom() in drawChild(),它们看起来都很好

那么有人知道我做错了什么吗?

文章论量法

和 onLayout 方法

附带说明一下,可以像这样使用 LayoutParams.WRAP_CONTENT 作为 makeMeasureSpec() 的参数吗?