- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 RelativeLayout 和 RadioGroup 在 android 中创建一个标签栏,该 RadioGroup 具有一个指示器,该指示器将滑动以指示 RadioGroup 中的 Activity RadioButton。
这些是自定义的单选按钮,实际上是文本上带有图标的矩形,所有内容都居中,背景使用自定义状态选择器。
这是我当前的层次结构:
<RelativeLayout> // Main view of the tab bar
<RadioGroup> // The buttons
<RadioButton />
<RadioButton />
<RadioButton />
</RadioGroup>
<ImageView /> // The indicator
</RelativeLayout>
我的想法是,当单击单选按钮时,我会将指示器与所选单选按钮的顶部和底部对齐(并为其设置动画)。但是,似乎 layout_align<Edge>
仅适用于兄弟元素,不适用于另一个 View 组的成员,即我可以与 RadioGroup 本身对齐,但不能与其中的 RadioButton 对齐。
我想把指示器作为 RadioGroup 的成员,但由于 RadioGroup 是 LinearLayout 的扩展,似乎没有办法将它放在给定 RadioButton 的边缘。
谁能想到我如何解决这个问题?或者也许有比我的动画对齐按钮技术更好的解决方案?
更新在@superjos 的帮助下,我设法很好地解决了这个问题。
我必须给每个按钮一个已知的高度,而不是使用 wrap_content
(不理想,但对于这个项目,它应该可以正常工作)。使指示器的高度与按钮的高度相匹配。确保 RadioGroup 设置为包装内容并在父 View 中垂直居中。将指标设置为 alignTop
和 toRightOf
广播组。然后,对于按钮点击监听器:
int prevY, newY;
int prevButtonIndex, newButtonIndex;
public void moveIndicator(button, indicator, index) {
prevY = newY;
newY = prevY + (index - prevButtonIndex) * button.getHeight();
TranslateAnimation animation = new TranslateAnimation(0, 0, prevY, newY);
animation.setDuration(500);
animation.setFillAfter(true); // stay at final animation position
indicator.setAnimation();
animation.start();
}
最佳答案
这是我的想法。以下是一些更详细的步骤。
想法是让 ImageView 有一个 RadioGroup 兄弟,就像在您的示例中一样。 ImageView 最初位于 RadioGroup 的右侧,其水平中间线与第一个(或任何选定的)RadioButton 对齐。
然后,在单击 RadioButton 时,会在运行时构建/配置 TranslateAnimation,以便让 ImageView 垂直移动,直到它的中间线与单击的按钮之一对齐。动画是用 fillAfter 设置的,以便在完成后保持稳定。
步骤:
创建您的资源,使 ImageView 和 RadioButton 具有相同的高度,或者使用垂直填充使它们具有相同的高度。
要最初将 ImageView 与第一个 RadioButton 对齐,一些 XML 可能 就足够了:在 ImageView 中将 layout_toRightOf
和 layout_alignTop
附加到 radio 组。为了考虑 RadioGroup 的顶部填充,您可以将其添加到初始 ImageView 顶部填充 XML 属性。或者最好是上边距。
单击 RadioButton 时,创建将应用于 ImageVew 的 TranslateAnimation,仅更改从 0 开始到其目标 toY 值的 Y 坐标(而 from/toX 属性将为 0)。这是由一个公式给出的,例如:
toY = (ClickedRadioButton.Index - LastClickedRadioButton.Index) * RadioButton.Heigth
这里的 Index 是 RadioButton 在组内的顺序位置(例如从 0 到 2)(警告:这是伪代码,不一定是名为 Index< 的现有 Java 字段/em>).
将动画应用于 ImageView 并启动它。
关于android - 相对布局 : align view to child of sibling viewgroup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8188109/
我试图找出在表格单元格上放置对齐属性与使用 text-align css 属性之间的区别。下面的代码显示了 IE 与其他浏览器中的不同结果。在 IE 中,对齐最终会对齐每个子子项,因此文本“test”
我正在 summernote HTML 编辑器上做一些 POC,我正在使用自定义工具栏,但我不知道如何添加对齐(左对齐、居中对齐、右对齐)工具栏,所以有人可以帮助我实现这一目标。 还有人可以帮我找到更
以下是从节对齐转换为文件对齐的步骤: 找到数据的 RVA 从 RVA 导出引用的数据所属的部分。这是微不足道的,因为部分不重叠。文件头中提供了各个部分的起始地址。 找出RVA和section的起始地址
align-self 在以下代码中, align-self 与 flex-wrap: nowrap 一起使用。 flex-container { display: flex; flex-wra
这是CSS: .divPhoto { border:1px solid #999; width:140px; height:140px; border-radius:3
我正在为 Windows Phone 8 开发,我已经设计了我的应用程序,我注意到有一个“分配网格”代码,默认情况下可以在新项目中取消注释。 看看下面的文件中的描述: --> 这是取
我们有浏览器前缀或黑客 (for Google and Safari) text-align: -webkit-right; (for Firefox) text-align:
最近我观察到,在 Clang 9.0 上 alignof 和 __alignof 为 unsigned long long 返回不同的值,并且在 https://reviews.llvm.org/D5
我已经一年多没有为 Android 开发了,我对它有点生疏了。我正在尝试设置一个有点简单的 UI:屏幕底部的底部栏和它上面的 fragment (但没有填充整个高度)。像这样: 我认为这会很简单,但经
你好,我正在尝试找到一种使用“讨厌的”align=center 技巧的方法.. 嗯,当我查看一些代码时,我注意到两个非常相似的片段呈现的并不相同。我找不到让他们表现相同的方法。这包括用 div 替换顶
抱歉这个愚蠢的问题。我只想知道我们什么时候讨论内存中的数据应该如何对齐之类的。这个主题是叫“内存对齐”还是“数据对齐”,还是我可以随便叫它什么? 最佳答案 在编程的上下文中,它被称为 data str
所以我只是想制作一个简单的导航栏,并且我刚开始使用 flexbox。为什么 align-content 在这里不起作用?我可以让 justify-content 工作,但我就是无法垂直对齐。这是代码。
我从这个 SO 开始答案,我试图使用提供的纯 flexbox 答案。 然而,当我尝试这个时,我看到了以下结果。 我不确定为什么 Button 4 在行中出现的位置高于其余元素。 HTML
我已通读 A complete guide to Grid ,但仍然对两组容器属性之间的差异感到困惑,即“justify/align-items”与“justify/align-content”。 我
我有一个simple plunker here. .container { display:flex; flex-flow: row nowrap; justify-content: sp
从 http://code.google.com/p/berkeleyaligner/ 下载主干代码后,我将该项目添加到 Eclipse 上的构建路径中。然后,使用下面的代码,我可以提取从 sourc
这个问题在这里已经有了答案: What's the difference between align-content and align-items? (15 个答案) 关闭 7 年前。 我发现 C
[short text][image1][image2]____________________________________ [this is a reallyyyyyyy............
我有一个很小的菜单列表,当鼠标靠近时它应该会增长。在其原始状态下,菜单是右对齐的,悬停时每第二个元素向右移动并左对齐以为增加的高度腾出空间(参见 JSFiddle )。 ul { font-siz
这个问题在这里已经有了答案: Align child elements of different blocks (3 个答案) 关闭 3 年前。
我是一名优秀的程序员,十分优秀!