【问题标题】:Button to hide a TextView隐藏 TextView 的按钮
【发布时间】:2018-04-05 02:48:14
【问题描述】:

我一直在为此寻找解决方案,但似乎无法解决。这里有一两个关于这个主题的文章,但我似乎无法让他们继续下去。我也是 Android 的新手,虽然我已经断断续续地玩了几年,但我仍然对我所写的内容几乎一无所知。

基本上我有一个 TextView 和一个按钮。理想情况下,我想在 TextView 中放一些文本,按一个按钮就消失了,再按一次按钮又回来了。

我已经把它缩小到需要了解 findViewById(R.id.button2) 的作用,但老实说我有点迷茫。

我已经添加了我的按钮代码,但很抱歉这是一个菜鸟问题

public void onClick(Button v){
    TextView t1 = (TextView)findViewById(R.id.editText);
    v.setVisibility(View.GONE);

    Button button = (Button) findViewById(R.id.button2);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            TextView t1 = (TextView)findViewById(R.id.TextView);
            v.setVisibility(View.GONE);
        }
    });
}

【问题讨论】:

    标签: android textview onclicklistener


    【解决方案1】:

    您的代码有几个问题。我不会给你代码,因为那不会真正帮助你学习。相反,我会解释一些事情,让你试着弄清楚或者带着更明确的问题回来。

    您知道使用 setContentView 设置的 xml 文件吗?其中的一些标签有一个属性 android:id="xxxx"。该 xxxx 是该视图的 id,使用它以便您可以在代码中找到该视图。 findViewById 函数遍历屏幕上的所有视图,并找到具有该 ID 的视图并将其返回。这为您提供了对视图的引用,以便您可以更改它。例如,您可以设置其可见性、设置其背景颜色或设置 OnClickListener。

    因此,要让按钮切换另一个视图的可见性,您需要能够执行以下操作:

    1)找到要更改的视图

    2)弄清楚它当前的可见性是什么

    3)弄清楚你想要它成为什么(与现在相反

    4)设置可见性

    您需要编写一个函数来完成所有这些工作。那么你需要这样做

    1)找到您要用于更改可见性的按钮

    2) 告诉它在按下时调用你的函数。

    弄清楚如何单独执行每个步骤,您应该能够将它们组合在一起。祝你好运。

    【讨论】:

      【解决方案2】:

      findViewById(R.id.button2) 找到 ID 为 button2 的视图。

      您可以在 onClick 内部检查 t1 是否可见(t1.setVisibility(View.GONE); 不是v.setVisibility(View.GONE);),并在View.GONEView.VISIBLE 之间切换。

      请记住,您的 findViewById() 应该有一个真实的 id。它们通常设置在 activity_name.xml 上。

      您在 onClick 中使用了 onClick。我个人建议使用 setOnClickListener 手动设置监听器。

      有很多工作要做,从这些tutorials 开始。继续尝试并尝试了解您在做什么。

      【讨论】:

        【解决方案3】:

        看起来您需要一个工具按钮功能,这里有一段代码。

        重要提示:您必须注意@GabeSechan 和@SkyDriver2500 的答案。

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.your_layout);
            //your other code
        
            Button button = (Button) findViewById(R.id.button2);
            final TextView t1 = (TextView) findViewById(R.id.editText);
            button.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    t1.setVisibility(t1.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
                }
            });
        }
        

        【讨论】:

          【解决方案4】:

          我不确定该代码现在是否会对您有所帮助。但以防万一,这里是

                      final boolean[] isTvVisible = {false};
                      final TextView t1 = (TextView)findViewById(R.id.editText);
                      t1.setVisibility(View.GONE);
          
                      Button button = (Button) findViewById(R.id.button2);
                      button.setOnClickListener(new View.OnClickListener() {
                          public void onClick(View v) {
                              if (isTvVisible[0]) {
                                  t1.setVisibility(View.GONE);
                                  isTvVisible[0] = false;
                              } else {
                                  t1.setVisibility(View.VISIBLE);
                                  isTvVisible[0] = true;
                              }
                          }
                      });
          

          【讨论】:

            猜你喜欢
            • 2018-11-29
            • 1970-01-01
            • 2019-08-27
            • 2020-11-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-18
            • 2021-11-27
            相关资源
            最近更新 更多