- 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/
我有一个名为 Customview 的 viewGroup。我需要在运行时将另一个具有多个 subview 的 viewGroup 分配给 Customview。如果以上一个是可能的,我没有正确获取
我有一个包含 N 个子项的自定义 ViewGroup。现在,我创建了另一组 ViewGroup。我想将第二个 ViewGroup 添加到第一个。我怎么做?谢谢.. 最佳答案 来自代码: firstVi
我遇到了一个奇怪的问题。例如,我们有这样的布局: 我们的屏幕将变黑。如果我将 LinearLayout 替换为 FrameLayout 或 ConstraintLayout,结果相同
我希望能够以编程方式将一个 View 组添加到另一个 View 组。两者都在 xml 中定义如下,连同我的 onCreate 方法: 主.xml: secondlayout.xml:
我不确定我的问题是否可以理解。我的布局中有一个 Image 和一个 ViewGroup。 ViewGroup 与 GridView 相当,我在其中有可以拖放的项目。现在我有兴趣将我的 ViewGrou
知道为什么会出现此崩溃吗?跟踪只有 native 代码,因此很难追踪到它。当我在 Fragment 中运行动画并且当动画结束时我为 FragmentStatePagerAdapter 调用 notif
在方法内部,我调用 addView和 removeView如下: public class EnclosingClass extends FrameLayout { ... void
如何检索以“llIndex”为 id 的 linearLayout 的索引。谢谢 最佳答案 非常简单 - 在 View 的父级上调用 indexOfChild 函数:
我有子元素(不是根)RelativeLayout 的布局,然后我创建 ViewPager 并将其作为我的相对布局的子元素插入,就像 +相对布局(根) | +-- 相对布局(子) | +-- -- 浏览
我有一个布局,其根 ViewGroup 有两个 child ,其中只有一个始终可见。如果不适用,另一个 child 的可见性将在运行时设置为 View.GONE。 当两个 child 都可见时,高度设
我的 XML 布局中有以下节点: TagLayout 是一个扩展 ViewGroup 的类,基本上包含一堆带有文本的按钮(一个自定义对象,充当标签,但它既不在这里也不在那里)。 问题是当按钮太多时,
如果我尝试使用 ViewGroup,我会收到此错误 “ViewHolder cannot be resolved to a type”。没有具体的import present,如何使用? 最佳答案 也
我的自定义 ViewGroup 有问题。我连续布置了 3 个 child ,并使用 Scroller 滚动到中间的 child 。根据用户的触摸输入,我更改了应该显示的子项并请求新布局。然后我按新顺序
我正在尝试在 Android 中制作简单的翻译动画。以下不起作用: public class MyView extends ViewGroup { ... TranslateAnima
为什么 android:clipChildren="false"不工作?我想实现与 CSS overflow: visible 相同的效果,这样即使 subview 位于其父布局之外,它们也是可见的。
假设有一个包含多个子项的 ViewGroup。至于这个 ViewGroup,我想让它管理所有子项的所有 MotionEvent,这表示 VG 将 1. 能够在事件被发送到目标( child )之前拦截
我有 CustomComponent 类,它扩展了 ViewGroup。 CustomComponent源代码: public class CustomComponent extends
我的 Android 应用程序中有几个具有相同基本结构的 Activity,我正试图让我的布局变干。重复的代码如下所示。它包含一个带有页脚的可滚动区域,该页脚具有“后退”和“仪表板”链接。还有一个 F
我有一个 Android TV 布局,如下图所示。 顶部一个PagerSlidingTabStrip,从服务器拉取数据; 底部有 Fragment 的 ViewPager,每个 Fragment 都有
我正在尝试创建带有内部包含文本的指示器的 fragment slider 。 我在网上找到了一些包含图像 slider 的教程,并将其编辑为文本 slider ,但我收到了此错误消息: android
我是一名优秀的程序员,十分优秀!