gpt4 book ai didi

android - 如何制作跟踪选中的单选按钮的选择边框?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:18:40 26 4
gpt4 key购买 nike

我有一组具有自定义样式的 RadioButton。我想在当前选中的按钮周围显示一个边框。这应该很容易使用 XML,但现在我想要边框动画。如果选中了一个新的单选按钮,边框应该“飞”到它的新位置,并带有精美的动画:

+------+
|* btn1| o btn2
+------+

+------+
o b|n1 * |tn2
+------+

+------+
o btn1 |* btn2|
+------+

因此,我决定将边框制作成一个单独的 View 对象,这样我就可以正确地为其设置动画。问题在于跟踪屏幕上相应单选按钮的位置。

我试图让它在没有动画的情况下工作。我目前的尝试看起来像这样(只显示相关属性):

    <RelativeLayout
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true">
<RadioGroup
android:id="@+id/radio_group">
<RadioButton/>
<RadioButton/>
<RadioButton/>
</RadioGroup>
<View
android:id="@+id/selection_border"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"/>
</RelativeLayout>

RadioGroupOnCheckedChangeListener 中,我通过设置边距来移动选择边框(我可以设置位置,但是使用 相对布局):

View radioButton = findViewById(checkedId);
View selectionBorder = findViewById(R.id.selection_border);
ViewGroup radioGroup = (ViewGroup)findViewById(R.id.radio_group);

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(selectionBorder.getLayoutParams());
params.leftMargin = radioGroup.getLeft() + radioButton.getLeft();
params.topMargin = radioGroup.getTop() + radioButton.getTop();
selection.setLayoutParams(params);

selection.requestLayout();

然而,在初始化时会出现问题。因为还没有做布局,所以边框的位置设置错误。似乎不可能立即强制重新布局,而且似乎也不可能在布局完成后获得事件。

所有这些麻烦让我相信必须有一种更简洁的方法来完成我想要的。有什么好主意吗?

最佳答案

我认为最好的方法是将复选框视为图像。检查/未检查两种类型。然后你基本上是在屏幕上移动图像。如果用户在您知道他们已选择的图像范围内按下鼠标,则使用 TouchEvents 和图像处理所有事情。这很容易,因为现在您只需要处理图像、 Canvas 和标准的 x,y 坐标。

关于android - 如何制作跟踪选中的单选按钮的选择边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5050639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com