3

左側にクロノメーターがあり、RelativeLayoutの中央にテキストビューがあるタイトルバーがあるアプリに取り組んでいます。

クロノメーターと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">

ユーザーがそれをクリックしたときにchhornometerを非表示にし、ユーザーがもう一度クリックしたときにそれを再表示したいと思います。

これはどのように達成できますか?

編集、さらに回答とコメントに

これがカラーファイルコードです

<?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値の変化を示しますが、表示の色の変化は起こりません。

4

1 に答える 1

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;
        }
    }
});
于 2011-09-14T14:59:09.657 に答える