2012-01-14 1 views
0

こんにちは、私はこのトピックを検索してきましたが、たくさん見つかりませんでしたので、私はこれを尋ねるのは明らかです。私が達成したいのは、XMLレイアウトに重なっている2つの画像ボタンがあることです。 .javaファイルでトップボタンをクリックすると、それが消えて2番目の画像ボタンが表示されます。クリックすると消え、最初の画像ボタンが再び表示されます。ImageButtonsのsetVisibilityに関する問題

私が抱えている問題は、最初のボタンをクリックしたときにうまく消えてしまい、そのあと2回の合計で消えてしまうことです。私はこの権利をしているのかどうか分からず、これを達成するよりよい方法が私のやり方よりもあるかもしれないので、私は喜んでアドバイスを受けます。

また、私は、ラベルを青色で強調表示して強制終了させるため、musicbutton2を目に見えるように設定する別の行は、最初のボタンに表示されません。

optionsActivity.java(新):

package com.crazycastles; 

import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.ImageButton; 

public class optionsActivity extends Activity { 
    /** Called when the activity is first created. */ 
    ImageButton musicbutton, musicbutton2; 
    boolean answer=true; 
    final MediaPlayer buttonSound = MediaPlayer.create(
      optionsActivity.this, R.raw.swords); 


    @Override 

     public void onCreate(Bundle savedInstanceState) { 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.options); 




      if (answer=true){ 
      //CREATE BUTTON 1 & SOUND 
      final ImageButton musicbutton = (ImageButton) findViewById(R.id.musicbutton); 
      musicbutton.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
       musicbutton.setBackgroundResource(R.drawable.musicbutton2); 
       buttonSound.start(); 
       answer=false; 
      } 
      }); 
      } 


      if (answer!=true){ 
       //CREATE BUTTON 1 & SOUND 
       final ImageButton musicbutton = (ImageButton) findViewById(R.id.musicbutton); 
       musicbutton.setOnClickListener(new View.OnClickListener() { 
        public void onClick(View v) { 
        musicbutton.setBackgroundResource(R.drawable.musicbutton); 
        buttonSound.start(); 
        answer=true; 
       } 
       }); 
       } 




} 
} 

Options.xmlを:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:background="@drawable/mainscreen" > 

    <ImageButton 
     android:id="@+id/musicbutton" 
     android:layout_width="218dp" 
     android:layout_height="51dp" 
     android:layout_marginBottom="100dp" 
     android:layout_marginLeft="50dp" 
     android:layout_marginTop="200dp" 
     android:background="@drawable/musicbutton" 
     android:scaleType="centerCrop" 
      /> 



</LinearLayout> 

答えて

1

私はあなたの問題が原因であなたが線形レイアウトを使用しようとしている方法とマージンの到来していると思います上のいずれかのボタンをスクロールして上に移動します。

RelativeLayoutあなたの親としてそれらの1つを使用すると、マージンのものを取り除くことができます。ボタンは、あなたが目指しているように、デフォルトでは重複しています。そうした場合でも同じ問題が発生している場合は、クリックリスナーにログデバッグ文を追加して、ボタンが表示状態を変更して何が起こっているかを確認しようとするときに出力します。

ボタンの見た目を変更するだけの目的がある場合は、ボタンを1つだけ使用し、背景をButton.setBackgroundResource()に変更することをお勧めします。ブール値のフラグを保持して、それを使用してR.drawable.musicbuttonかR.drawable.musicbutton2を設定するかどうかを確認することができます

+0

ボタンを1つしか使用せず、外観を変更しただけでも音楽を一時停止して再開するなどの2つの異なる操作を実行しますか? –

+0

はい、if文で確認できるブール値フラグをそのまま使用します。そして、それが押されるたびにあなたはブール値を反転します。 if文の中には、それぞれの可能性について好きなことをすることができます。 – FoamyGuy

+0

よろしくお願いします。私はそれを試みます。 –