Android:单击按钮时如何显示TextView?

Posted

技术标签:

【中文标题】Android:单击按钮时如何显示TextView?【英文标题】:Android: How to Show TextView When Button is Clicked? 【发布时间】:2012-11-27 06:20:48 【问题描述】:

我目前已经设置好了,所以有几个 TextViews:

其中一个在单击一个按钮时更新,另一个按钮在单击时不会改变它。

其他 TextView 显示一个数字,我希望在单击任一按钮时更改它们,但目前所有 TextView 都是可见的,并且数字没有改变。

我希望其他 TextViews(下面的 num1-num3)最初是不可见的,然后当用户单击其中一个按钮时,TextViews 变得可见,并且它们的值由我编写的方法更新。

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_name);
    num1 = randNum();
    num1 = alterNum(num1);      
    num1View = (TextView) findViewById(R.id.number1); 
    num1View.setText("Num1 Number: " + String.valueOf(num1));

    num2 = randNum();
    num2 = alterNum(num2);
    num2View = (TextView) findViewById(R.id.number2); 
    num2View.setText("Num2 Number: " + String.valueOf(num2));

    num3 = randNum();
    num3 = alterNum(num3);
    num3View = (TextView) findViewById(R.id.number3); 
    num3View.setText("Num3 Number: " + String.valueOf(num3));

    // This one is always visible, the ones above should be invisible
    // and appear onClick
    currentNum = randNum();
    myTextView = (TextView) findViewById(R.id.current_number); 
    myTextView.setText("Current Number: " + String.valueOf(currentNum));
    okButton = (Button) findViewById(R.id.ok_button);
    okButton.setOnClickListener(this);
    changeButton = (Button) findViewById(R.id.change_button);
    changeButton.setOnClickListener(this);

我的点击:

@Override
public void onClick(View v) 
    switch (v.getId()) 
    case R.id.num_confirmation:
        //do nothing
        // do not let user hit buttons more than once (either case)
        changeButton.setEnabled(false);
        okButton.setEnabled(false);
        break;
    case R.id.swap_button:
        currentNum = alterNum();
        myTextView.setText("Current Number: " + String.valueOf(currentNum));
        // do not let user hit buttons more than once (either case)
        swapButton.setEnabled(false);
        okButton.setEnabled(false);
        break;
    default:
        break;
    

这是怎么做到的?

【问题讨论】:

【参考方案1】:
yourTextView.setVisibility(View.VISIBLE);

这使您的文本视图可见。

yourTextView.setVisibility(View.INVISIBLE);

这会使您的 textview 不可见,但保留布局。

yourTextView.setVisibility(View.GONE);

这会将其删除,以便其他视图可以重新排列。您仍然可以调用 View.VISIBLE 使其再次出现。

例如,您可以在定义 TextView (findviewbyid) 后放置它

 num1View.setVisibility(View.INVISIBLE);

然后你希望它回到哪里:

num1View.setVisibility(View.VISIBLE); 

【讨论】:

【参考方案2】:

在您的 xml 布局文件中为应该不可见的 textView 设置“可见”的初始值为“不可见”,并在您的 onClick 方法中更改其文本值并更改可见性:

 myTextView.setVisibility(View.VISIBLE);

这里有一个类似的问题应该会有所帮助:How to change visibility of layout programaticly

【讨论】:

优秀。谢谢!关于更改 num1-num3 的数字的小问题:这些语句在 onCreate 中是否正确?还是我需要将它们移动到 onClick 或其他地方? (即应计算一个初始数字,然后当单击任一按钮时,应更改数字并在单击时显示更改后的数字。) 是的,你可以在 onCreate 中进行,但在 onClick 中只会在需要时计算值。

以上是关于Android:单击按钮时如何显示TextView?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式单击时突出显示 TextView

如何在android的textview中显示MS word文件

Android - 按下按钮时将textview添加到布局

如何在 Android 中显示单选按钮的内容?

单击活动 1 中的按钮,如果单击按钮,则在活动 3 中显示 textview ...

从android中的对话框更改TextView文本