gpt4 book ai didi

android - 为什么必须为放入 View 中的每个元素创建一组新的 RelativeLayout.LayoutParams?

转载 作者:太空狗 更新时间:2023-10-29 14:30:14 25 4
gpt4 key购买 nike

我必须以编程方式执行此操作。所以,请耐心等待。

我将文本和两个按钮设置为在彼此下方对齐。因此,我为每个创建了一个新的 RelativeLayout.LayoutParams 实例,并添加了一条规则以将其设置在彼此之下。这行得通,我很高兴。

我的问题是:为什么我必须创建一个新实例才能让布局以这种方式显示它们?有什么方法可以减少以下代码,使其不那么重复(除了编写我自己的私有(private)方法来干掉它之外)。我想知道是否有一种方法可以利用我已经使用的东西在更少的代码行中完成同样的事情可能在 Android SDK 中被忽略了)?我是否必须继续为每个元素创建一个新的 RelativeLayout.LayoutParams 实例?

layout = new RelativeLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

text = new TextView(this);
text.setId(1);
text.setText("This is text");
layout.addView(text);

myButton1 = new Button(this);
myButton1.setId(2)
myButton1.setOnClickListener(this);
RelativeLayout.LayoutParams buttonParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
buttonParams.addRule(RelativeLayout.BELOW, text.getId());
layout.addView(myButton1, buttonParams);

myButton2 = new Button(this);
myButton2.setId(3)
myButton2.setOnClickListener(this);
buttonParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
buttonParams.addRule(RelativeLayout.BELOW, myButton1.getId());
layout.addView(myButton2, buttonParams);

最佳答案

不幸的是,RelativeLayout.LayoutParams 没有removeRule() 方法(至少根据API )所以你必须创建一个新的 LayoutParams 对象每次。

我倾向于同意@jeffamaphone 的观点,即您应该更喜欢 xml 布局而不是以编程方式设置布局。即使您没有将整个布局放在 xml 中,您也应该使用资源 ID(有关详细信息,请参阅 doc)来设置项目的 ID。这将保证唯一的 ID。

关于android - 为什么必须为放入 View 中的每个元素创建一组新的 RelativeLayout.LayoutParams?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7534317/

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