Android 单击不同按钮时,如何在一个文本视图中按顺序添加文本?
我在安卓工作室遇到了一个问题。我有两个不同的按钮和一个文本视图。我想要的效果如下: 案例1:单击bt1时,文本视图中显示“A”。当点击bt2时,文本视图中添加了“G”,因此文本视图显示“AG” 案例2:点击bt1时,文本视图中显示“A”。再次单击bt1时,它将消失,文本视图为空 案例3:当案例1完成时,单击bt1时,“A”被删除,因此textView显示“G” 非常感谢您帮助我修改代码。提前谢谢 主要活动代码:Android 单击不同按钮时,如何在一个文本视图中按顺序添加文本?,android,button,textview,onclicklistener,Android,Button,Textview,Onclicklistener,我在安卓工作室遇到了一个问题。我有两个不同的按钮和一个文本视图。我想要的效果如下: 案例1:单击bt1时,文本视图中显示“A”。当点击bt2时,文本视图中添加了“G”,因此文本视图显示“AG” 案例2:点击bt1时,文本视图中显示“A”。再次单击bt1时,它将消失,文本视图为空 案例3:当案例1完成时,单击bt1时,“A”被删除,因此textView显示“G” 非常感谢您帮助我修改代码。提前谢谢 主要活动代码: public class keyboard extends AppCompatAc
public class keyboard
extends AppCompatActivity {
Button btn1,btn2,btn3;
TextView text;
@Override
protected void
onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_keyboard);
text=(TextView)findViewById(R.id.txt);
btn1=(Button)findViewById(R.id.bt1);
btn2=(Button)findViewById(R.id.bt2);
btn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
text.setText("A");
text.setVisibility(text.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
}
});
btn2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
text.setText(text.getText() + "G");
text.setVisibility(text.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
}
});}
您可以这样做:
public class keyboard extends AppCompatActivity {
Button btn1,btn2,btn3;
TextView text;
boolean isBtn1Clicked,isBtn2Clicked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_keyboard);
text=(TextView)findViewById(R.id.txt);
btn1=(Button)findViewById(R.id.bt1);
btn2=(Button)findViewById(R.id.bt2);
isBtn1Clicked = false;
isBtn2Clicked = false;
btn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(!isBtn1Clicked){
text.setText("A");
} else{
//remove 'A' from your TextView
}
//check your TextView
if(text.getText().isEmpty()){
text.setVisibility.(View.INVISIBLE);
}else {
text.setVisibility.(View.VISIBLE);
}
}});
btn2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//same as btn1
}});
}
我更喜欢这样做:使用2个文本视图,每个按钮处理1个文本视图。您可以这样做:
public class keyboard extends AppCompatActivity {
Button btn1,btn2,btn3;
TextView text;
boolean isBtn1Clicked,isBtn2Clicked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_keyboard);
text=(TextView)findViewById(R.id.txt);
btn1=(Button)findViewById(R.id.bt1);
btn2=(Button)findViewById(R.id.bt2);
isBtn1Clicked = false;
isBtn2Clicked = false;
btn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
if(!isBtn1Clicked){
text.setText("A");
} else{
//remove 'A' from your TextView
}
//check your TextView
if(text.getText().isEmpty()){
text.setVisibility.(View.INVISIBLE);
}else {
text.setVisibility.(View.VISIBLE);
}
}});
btn2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
//same as btn1
}});
}
我更喜欢这样做:使用2个文本视图,每个按钮处理1个文本视图。尝试在
文本视图中切换A
和G
:
btn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
String curText = text.getText().toString();
if (curText.contains("A")) {
text.setText(curText.replace("A", ""));
} else {
text.setText("A" + curText);
}
}
});
btn2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
String curText = text.getText().toString();
if (curText.contains("G")) {
text.setText(curText.replace("G", ""));
} else {
text.setText(curText + "G");
}
}
});}
尝试在文本视图中切换A
和G
:
btn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
String curText = text.getText().toString();
if (curText.contains("A")) {
text.setText(curText.replace("A", ""));
} else {
text.setText("A" + curText);
}
}
});
btn2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
String curText = text.getText().toString();
if (curText.contains("G")) {
text.setText(curText.replace("G", ""));
} else {
text.setText(curText + "G");
}
}
});}
我将在这里提到逻辑,这取决于你如何构建它并进一步即兴创作
- 声明数组列表
ArrayList btn1list=新的ArrayList()
ArrayList btn2list=新的ArrayList()
- btn1.setOnClickListener仅当列表为空(!btn1list.size())时才将文本添加到列表btn1mylist.add(mystring)
- btn2.setOnClickListener仅当列表为空(!btn2list.size())时才将文本添加到列表btn2mylist.add(mystring)
- 设置读取数组值的文本视图
示例代码:
public class keyboard
extends AppCompatActivity {
Button btn1,btn2,btn3;
TextView text;
ArrayList<String> btn1list = new ArrayList<String>();
ArrayList<String> btn2list = new ArrayList<String>();
@Override
protected void
onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_keyboard);
text=(TextView)findViewById(R.id.txt);
btn1=(Button)findViewById(R.id.bt1);
btn2=(Button)findViewById(R.id.bt2);
btn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
// text.setText("A");
//Check for the btn1List size if it is not empty add the value and show the text
if(!bnt1List.size()){
// get the array list of items and set text
}
text.setVisibility(text.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
}
});
btn2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
// text.setText(text.getText() + "G");
//Check for the btn2List size if it is not empty add the value and show the text
if(!bnt2List.size()){
// get the array list of items and set text
}
text.setVisibility(text.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
}
});}
公共类键盘
扩展AppCompative活动{
按钮btn1、btn2、btn3;
文本查看文本;
ArrayList btn1list=新的ArrayList();
ArrayList btn2list=新的ArrayList();
@凌驾
保护空隙
一次创建(捆绑)
savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_键盘);
text=(TextView)findViewById(R.id.txt);
btn1=(按钮)findViewById(R.id.bt1);
btn2=(按钮)findViewById(R.id.bt2);
btn1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//text.setText(“A”);
//检查btn1List大小(如果不为空),添加值并显示文本
如果(!bnt1List.size()){
//获取项目的数组列表并设置文本
}
text.setVisibility(text.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE);
}
});
btn2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//text.setText(text.getText()+“G”);
//检查btn2List大小(如果不为空),添加值并显示文本
如果(!bnt2List.size()){
//获取项目的数组列表并设置文本
}
text.setVisibility(text.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE);
}
});}
我将在这里提到逻辑,这取决于您如何构建它并进一步即兴创作
- 声明数组列表
ArrayList btn1list=新的ArrayList()
ArrayList btn2list=新的ArrayList()
- btn1.setOnClickListener仅当列表为空(!btn1list.size())时才将文本添加到列表btn1mylist.add(mystring)
- btn2.setOnClickListener仅当列表为空(!btn2list.size())时才将文本添加到列表btn2mylist.add(mystring)
- 设置读取数组值的文本视图
示例代码:
public class keyboard
extends AppCompatActivity {
Button btn1,btn2,btn3;
TextView text;
ArrayList<String> btn1list = new ArrayList<String>();
ArrayList<String> btn2list = new ArrayList<String>();
@Override
protected void
onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_keyboard);
text=(TextView)findViewById(R.id.txt);
btn1=(Button)findViewById(R.id.bt1);
btn2=(Button)findViewById(R.id.bt2);
btn1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
// text.setText("A");
//Check for the btn1List size if it is not empty add the value and show the text
if(!bnt1List.size()){
// get the array list of items and set text
}
text.setVisibility(text.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
}
});
btn2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
// text.setText(text.getText() + "G");
//Check for the btn2List size if it is not empty add the value and show the text
if(!bnt2List.size()){
// get the array list of items and set text
}
text.setVisibility(text.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
}
});}
公共类键盘
扩展AppCompative活动{
按钮btn1、btn2、btn3;
文本查看文本;
ArrayList btn1list=新的ArrayList();
ArrayList btn2list=新的ArrayList();
@凌驾
保护空隙
一次创建(捆绑)
savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_键盘);
text=(TextView)findViewById(R.id.txt);
btn1=(按钮)findViewById(R.id.bt1);
btn2=(按钮)findViewById(R.id.bt2);
btn1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//text.setText(“A”);
//检查btn1List大小(如果不为空),添加值并显示文本
如果(!bnt1List.size()){
//获取项目的数组列表并设置文本
}
text.setVisibility(text.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE);
}
});
btn2.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//text.setText(text.getText()+“G”);
//检查btn2List大小(如果不为空),添加值并显示文本
如果(!bnt2List.size()){
//获取项目的数组列表并设置文本
}
text.setVisibility(text.getVisibility()==View.VISIBLE?View.GONE:View.VISIBLE);
}
});}
你应该尝试将每个按钮的值放入一个数组中,然后一个一个地读取。但是我对数组不太熟悉…你能帮我编辑代码,让我大致了解这个概念吗?谢谢你应该尝试将每个按钮的值放入一个数组中,然后一个一个地读取。但是我对arr不太熟悉嗯……你能帮我编辑一下代码,让我大致了解一下概念吗……多谢了,上面的实现只对一个字符有效。如果用户只对切换一个字符感到满意,你的方法很好杨柳,如果我想执行你给我看的相同任务,有没有办法缩短我的代码?因为我有我们有许多按钮来执行相同的任务……字母的顺序无关紧要,您可以将onClick()
中的代码生成一个函数,如updateText(String letter){}
。然后将所需的字母传递到此函数中。updateText(“a”)
,updateText(“G”)