как сделать Android-хронометр невидимым и видимым при нажатии - PullRequest
3 голосов
/ 12 сентября 2011

Я работаю над приложением, которое имеет заголовок с хронометром слева и текстовое представление с центром в RelativeLayout.

Title bar with Chronometer and TextView

RelativeLayout принимает высоту текстового обзора и ширину экрана заполнения

<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">

Я хочу скрыть шину, когда пользователь нажимает на него, и показывать его снова, пользователь нажимает снова.

Как этого можно достичь?

РЕДАКТИРОВАТЬ, далеена ответы и комментарии :

Вот код цветного файла

<?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);

        }
    });

, но результат

enter image description here

и больше не реагирует на клики.

Результаты LogCat

enter image description here enter image description here

Даже точки останова отладчика показывают изменение значения Textcolor, но изменение цвета на дисплее не происходит.

1 Ответ

1 голос
/ 14 сентября 2011

Если я правильно понял ваш вопрос, вы можете скрыть хронометр таким образом:

// 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;
        }
    }
});
...