【问题标题】:how to make android chronometer invisible and visible when clicked单击时如何使android计时器不可见和可见
【发布时间】:2011-09-11 20:35:58
【问题描述】:

我正在开发的应用程序有一个左侧带有计时器的标题栏和一个以相对布局为中心的文本视图。

RelativeLayout 取 textview 的高度并填满屏幕宽度

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/titlecontainer"
    android:orientation="vertical"
    android:padding="5dip" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" android:background="@color/titlebckgrnd">

我想在用户点击时隐藏计时器并取消隐藏用户再次点击。

如何做到这一点?

编辑,进一步了解答案和 cmets

这是颜色文件代码

<?xml version="1.0" encoding="utf-8"?>
   <resources>
   <color name="titlebckgrnd">#FFD55A2E</color>
   <color name="titletext">#FFFFFFFF</color>
 </resources>

我按照建议使用了以下代码

final TextView chron = (TextView)findViewById(R.id.chronometer);
    ((Chronometer) chron).start();
 chron.setOnClickListener(new OnClickListener() {
        private boolean mToggle = true;
        @Override
        public void onClick(View v) {
                Log.d("Gaurav", "Invisible");
                if(mToggle) { 
                    Log.d("Gaurav", String.valueOf(chron.getCurrentTextColor()));
                    chron.setTextColor(R.color.titlebckgrnd);
                    mToggle = false;
                }
                else {
                                          chron.setTextColor(R.color.titletext);
                                          mToogle = true;
                                    } 


                //chronImage.setVisibility(View.VISIBLE);

                //v.setVisibility(View.INVISIBLE);

        }
    });

但结果是

并且它不再响应任何点击。

LogCat 结果

即使调试器断点显示 Textcolor 值发生变化,但显示颜色变化不会发生。

【问题讨论】:

    标签: android android-imageview android-relativelayout chronometer android-shape


    【解决方案1】:

    如果我正确理解了您的问题,您可以这样做来隐藏计时器:

    // We are in your Activity:
    
    final View chronometer= findViewById(R.id.chronometer);
    
    chronometer.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            chronometer.setVisibility(View.GONE); 
            // Use View.INVISIBLE if you would like to keep the room for this view
        }
    });
    

    但是将不再显示视图。因此,根据用户应单击的位置使其再次显示,您可能必须为视图和/或其文本提供与背景相同的颜色,而不是使它们不可见:

    // should chronometer be a TextView that displays the time:
    
    final TextView chronometer = (TextView) findViewById(R.id.chronometer);
    
    chronometer.setOnClickListener(new View.OnClickListener() {
        private boolean mToggle = true;
    
        public void onClick(View v) {
            if (mToggle ) {
                chronometer.setTextColor(Color.BLACK); 
                mToggle = false;
            }
            else {
                chronometer.setTextColor(Color.WHITE); 
                mToggle = true;
            }
        }
    });
    

    【讨论】:

    • 我添加了代码和图像以及我在下面遇到您的建议时遇到的问题。
    • 好吧,我看到您将chron 转换为TextView,然后转换为Chronometer。这不是问题的原因,但您可以将其直接转换为Chronometer,因为Chronometer 扩展TextView。关于问题本身,您的 LogCat 怎么说?您是否尝试在侦听器中设置断点以查看 is 是否被正确调用?
    • 我已将 LogCat 结果添加到问题中。我不知道如何设置断点,我阅读了它并很快添加评论。我会执行选角建议。
    • 根据您的 logcat,似乎新闻事件被正确捕获。必须有其他东西阻止计时器恢复。让我们知道您何时会使用断点单步执行代码!
    • 新闻活动正常运行。天文台也在改变时间值。我插入了断点并监控 TextColor 值的值,它的值是 2130968576 和 2130968577。颜色变化有一些问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    相关资源
    最近更新 更多