gpt4 book ai didi

java - 如何在android中以编程方式使用相对布局创建编辑文本?

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:12 25 4
gpt4 key购买 nike

我正在尝试根据我通过 XML 创建的旧文本在 java 代码中创建新的编辑文本。我希望这个新的编辑文本显示在旧编辑文本的右侧和 ImageView 的下方,我也在 XML 中创建了 ImageView ,为此我使用relativelayout:

private void createEditText(){
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
editText.getLayoutParams().width,
editText.getLayoutParams().height);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
layoutParams.addRule(RelativeLayout.RIGHT_OF, editText.getId());
layoutParams.addRule(RelativeLayout.BELOW, imageView.getId());
final EditText newEditText = new EditText(this);
newEditText.setBackgroundResource(R.drawable.rounded_edittext);
newEditText.setLayoutParams(layoutParams);

relativeLayout.addView(newEditText);
}

但是新的编辑文本出现在屏幕顶部,忽略了我在代码中使用的 addRule 函数。这是 RealtiveLayout:

<RelativeLayout
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center" />

我做错了什么? java 代码或 XML 文件中是否有错误?

最佳答案

您需要为newEditText设置一个索引。默认值为-1,这意味着它将被添加到其他 View 之前。您可以通过 relativeLayout.getChildCount(); 获取 child 数量由于计数是子项的数量,因此它也是添加 newEditText 的正确索引。 .

private void createEditText(){
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
editText.getLayoutParams().width,
editText.getLayoutParams().height);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
layoutParams.addRule(RelativeLayout.RIGHT_OF, editText.getId());
layoutParams.addRule(RelativeLayout.BELOW, imageView.getId());
final EditText newEditText = new EditText(this);
newEditText.setBackgroundResource(R.drawable.rounded_edittext);

relativeLayout.addView(newEditText,relativeLayout.getChildCount(),layoutParams);
}

自从你创建了 newEditText最后请记住,每次启动应用程序时,您不能多次使用此方法。

关于java - 如何在android中以编程方式使用相对布局创建编辑文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43379881/

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