gpt4 book ai didi

java - 在相对布局中动态移动 View

转载 作者:行者123 更新时间:2023-11-30 04:36:28 25 4
gpt4 key购买 nike

我正在做一个 pageindex,当前页面应该用箭头图像 (imageview) 突出显示。

索引是一个添加了 25 个 TextView 的 RelativeLayout:

for (int i = 0; i < 25; i++) {
TextView tv = new TextView(this);
tv.setText(Integer.toString(i+1));
tv.setGravity(Gravity.CENTER);
int id = 2000+i;
tv.setId(id);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.FILL_PARENT);
if(i==0)
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
else
params.addRule(RelativeLayout.RIGHT_OF, prevViewId);
prevViewId = id;
rl.addView(tv,params);
}

当页面改变时,我会做这样的事情:

        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.ALIGN_BOTTOM, 2000+i);
params.addRule(RelativeLayout.ALIGN_RIGHT, 2000+i);
params.addRule(RelativeLayout.ALIGN_LEFT, 2000+i);
arrowImageView.setLayoutParams(params);
rl.requestLayout();
rl.invalidate();

一切看起来都是正确的,我可以在“启动”时将箭头放在任意页面上,但是当页面改变时箭头不会移动。我已经调试并验证了代码已运行并且一切看起来都是正确的,但箭头仍然卡在第一个位置。如果我强制删除并添加一个新的 imageview 而不是更新 LayoutParams,箭头将完全消失。

最佳答案

我有同样的问题。我还想在运行时在引用布局内移动我的 View 。因此,如果有人能提供帮助,那就太棒了。

我相信上面发生的事情是箭头的位置发生了变化,但是它没有更新到屏幕上。如果我错了,请纠正我,这只是我的猜测,因为我也遇到了同样的问题。

-编辑-经过一番折腾后,我发现对我有用的是先删除再添加。rl.removeView(电视);rl.addView(电视,参数);

-编辑-另外,你可以将移动 View 的参数保存到一个唯一的变量中,这样你所要做的就是改变边距......例如:代替params,让它成为自己的名字“arrowParams”然后移动它只需要:arrowParams.leftMargin = 2000+i;等等……

关于java - 在相对布局中动态移动 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6746114/

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