0

チェックと呼ばれるボタンがあります。クリックするたびに非表示にして表示したいのですが、表示してクリックすると非表示になり、詩が表示されます。

しかし、私のコードは機能しません!何か案は ?

 Button Check ;
        @Override   
         public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);  
           setContentView(R.layout.settings);

        Check  = (Button)findViewById(R.id.checkButton);

           Check.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View View) {



                if (View.getVisibility() == android.view.View.VISIBLE) 
                        View.setVisibility(android.view.View.INVISIBLE);
                        else if (View.getVisibility() == android.view.View.INVISIBLE)
                            View.setVisibility(android.view.View.VISIBLE);

            }
        });

私のアクティビティでは、最初に表示され、クリックすると非表示になりますが、もう一度クリックすると非表示のままになります。

4

2 に答える 2

3

コードをこれに変更し、

Check.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                if (v.isShown()) 
                        v.setVisibility(View.INVISIBLE);
                else
                        v.setVisibility(View.VISIBLE);

            }

しかし、問題は、ボタンが非表示になると、クリックイベントが発生しないことだと思います。まずonClick、ボタンが非表示のときにメソッドが呼び出しを取得することを確認します。

非表示のボタンは、インタラクションイベントをディスパッチしません。したがって、ボタンの可視性を非表示に設定する代わりに、透明または空白の背景などを設定できます。

しかし、私は個人的に、なぜ人が目に見えないボタンをクリックするので、ユースケースを変更する必要があると信じています。

于 2013-01-13T07:50:23.163 に答える
1

これを試して:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="abcd" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:onClick="abc"
        android:text="Button" />
</LinearLayout>



public void abc(View v) {
    v.setVisibility(View.INVISIBLE);
}

public void abcd(View v) {
    v.findViewById(R.id.button1).setVisibility(View.VISIBLE);
}

非表示のアイテムはクリック時のイベントを受け取りません。したがって、非表示のクリックを受け取る唯一の方法は、非表示のビューの代わりに他のビューを受け取ることです。上記のソリューションはボタンをレイアウトでラップするため、ボタンが非表示の場合、クリックはレイアウトに渡されます。レイアウトはイベントを処理し、それに応じて実行します。このようなレイアウトを頻繁に使用する場合は、上記のメカニズムを使用してカスタムボタンを作成することもできます。

于 2013-01-13T08:03:59.977 に答える