如何通过在android中按下按钮来添加纯文本视图?
Posted
技术标签:
【中文标题】如何通过在android中按下按钮来添加纯文本视图?【英文标题】:How to add a plain text view with the pressing of a button in android? 【发布时间】:2021-09-08 06:55:05 【问题描述】:我想学的是,
单击按钮时,一个新的纯文本(可编辑)应该出现在我在 UI 中创建的默认纯文本下方,具有与默认文本相同的属性(例如,相同的宽度、高度),其中有一些边距每个人之间。
我的项目布局类型是约束布局,我希望将按钮放置在 UI 的右下角,并且我已将其与约束之一一起存档。
通过堆栈溢出和其他通过谷歌浏览,
我所看到的只是在线性布局中添加纯文本,如果我从约束布局切换到线性布局,我的按钮会错位,并不是说我至少实现了添加纯文本的功能文本与线性布局单击按钮。
这就是为什么我坚持使用约束布局,至少我的按钮不会放错位置,如果任何布局中有任何方法可以让我得到我想要的结果,我愿意接受。
到目前为止,我已经做到了
ConstraintLayout constraintLayout = findViewById(R.id.constraintLayout);
Button buttonAddNewToDo = findViewById(R.id.addNewToDo);
buttonAddNewToDo.setOnClickListener(new View.OnClickListener()
public void onClick(View view)
EditText newToDo = new EditText(MainActivity.this);
newToDo.setLayoutParams(new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
newToDo.setHint("enter new to do");
constraintLayout.addView(newToDo);
);
代码在 onCreate() 仅供参考。
上面的代码所做的是,当按钮被点击时,它会创建一个新的纯文本,它在左上角,
查看上述代码的 UI(见下图)
enter image description here
【问题讨论】:
您想在点击添加时将多个编辑文本添加到视图中,还是只添加一个编辑文本并禁用按钮?? 点击按钮时可多次编辑文本到视图 【参考方案1】:约束布局需要额外的信息,而不仅仅是向布局添加视图,即在布局中附加视图的位置。
EditText newToDo = new EditText(MainActivity.this);
newToDo.setLayoutParams(new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
newToDo.setHint("enter new to do");
constraintLayout.addView(newToDo);
将此视图添加到布局后,为该视图设置约束。要直接在默认文本视图下方添加视图,我们需要该文本视图的 id,然后是我们将动态生成的所有其他后续视图。
int lastEditTextId = 0;
boolean isFirstEditText = true;
ConstraintLayout constraintLayout = findViewById(R.id.constraintLayout);
Button buttonAddNewToDo = findViewById(R.id.addNewToDo);
buttonAddNewToDo.setOnClickListener(new View.OnClickListener()
public void onClick(View view)
EditText newToDo = new EditText(MainActivity.this);
newToDo.setLayoutParams(new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
newToDo.setHint("enter new to do");
constraintLayout.addView(newToDo);
newToDo.setId(View.generateViewId());
//Setting constraint set for the new view
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(constraintLayout);
constraintSet.connect(
newToDo.getId(),
ConstraintSet.START,
ConstraintSet.PARENT_ID,
ConstraintSet.START
);
constraintSet.connect(
newToDo.getId(),
ConstraintSet.END,
ConstraintSet.PARENT_ID,
ConstraintSet.END
);
if (isFirstEditText)
constraintSet.connect(
newToDo.getId(),
ConstraintSet.TOP,
YOUR_DEFAULT_TEXT_VIEW.getId(),
ConstraintSet.BOTTOM
);
isFirstEditText = false;
else
constraintSet.connect(
newToDo.getId(),
ConstraintSet.TOP,
lastEditTextId,
ConstraintSet.BOTTOM
);
lastEditTextId = newToDo.getId();
constraintSet.applyTo(constraintLayout);
);
【讨论】:
它起作用了,我只改变了我想要的约束,有没有办法让这条线消失?我的意思是输入文本后的editText行? 试试这个***.com/questions/37824790/…【参考方案2】:您可以在 xml 文件中设计编辑文本,而初始可见性消失。当点击按钮时设置可见性可见。
xml
<EditText
android:visibility = "gone" />
活动
buttonAddNewToDo.setOnClickListener(new View.OnClickListener()
public void onClick(View view)
edittext.setvisibility(View.Visible);
);
【讨论】:
如果我希望我的编辑文本最初不可见,您的回答很好,但我的问题是我想通过单击按钮获得一个新的编辑文本? 所以每次单击按钮时都会显示新的编辑文本?以上是关于如何通过在android中按下按钮来添加纯文本视图?的主要内容,如果未能解决你的问题,请参考以下文章