Проблемы с setVisibility для ImageButtons - PullRequest
0 голосов
/ 14 января 2012

Привет, поэтому я искал эту тему и не мог найти много, поэтому я думаю, что у меня есть возможность спросить об этом.То, что я хочу сделать, это иметь две кнопки изображения, которые перекрываются в макете XML.Затем в файле .java при нажатии верхней кнопки он исчезает, и появляется вторая кнопка изображения.Когда по нему щелкают, он исчезает, и первая кнопка изображения появляется снова и снова и снова.

Проблема, с которой я столкнулся, заключается в том, что, когда я нажимаю первую кнопку, она исчезает нормально и работает в общей сложности два раза, после чего все исчезает.Я не уверен, что делаю это правильно, и, возможно, есть лучший способ сделать это, чем то, как я это делаю, поэтому я с радостью приму совет.

Кроме того, причина, по которой я этого не делаюУ меня есть еще одна строка в первой кнопке, которая устанавливает musicbutton2 как видимую, потому что, когда я делаю это, метка подсвечивается синим, и это вызывает принудительное закрытие.

optionsActivity.java (New):

    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 Ответ

1 голос
/ 14 января 2012

Я думаю, что ваши проблемы будут возникать из-за того, как вы пытаетесь использовать линейный макет и верхнюю границу, чтобы поднять одну из кнопок вверх.

Извлеките RelativeLayout Если вы переключитесь на использование одного из них в качестве родителя, тогда вы сможете избавиться от маржи. По умолчанию кнопки будут перекрываться так, как вы к ним стремитесь. Если вы делаете это и по-прежнему сталкиваетесь с той же проблемой, то добавьте в свои прослушиватели кликов некоторые статистические данные отладки журнала, которые выводятся при изменении видимости кнопок, чтобы попытаться увидеть, что происходит.

Если ваша цель - просто изменить внешний вид кнопки, я бы рекомендовал использовать только одну кнопку и просто изменить ее фон с помощью Button.setBackgroundResource () . Вы можете просто сохранить логический флаг и использовать его, чтобы проверить, следует ли установить значение R.drawable.musicbutton или R.drawable.musicbutton2

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...