SetVisibility не работает с ImageButton - PullRequest
0 голосов
/ 07 июня 2011

Итак, я искал на форумах, как это сделать, но ничего, что я нашел, не сработало.Когда я вызываю setVisibility () для кнопки с изображением, кнопка не изменяется.Ниже приведен мой код в методе onCreate, и обе кнопки отображаются, когда я запускаю приложение.Однако, если бы я жестко закодировал атрибут в файл xml, видимость изменилась.Есть идеи, почему это происходит?

super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    btn1 = new ImageButton(this);
    btn1.setVisibility(GONE);
    btn2 = new ImageButton(this);
    btn2.setVisibility(GONE);

Ответы [ 2 ]

3 голосов
/ 07 июня 2011

Измените свой код на:

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (ImageButton)findViewById(R.id.btn1);
btn1.setVisibility(View.GONE);
btn2 = (ImageButton)findViewById(R.id.btn2);
btn2.setVisibility(View.GONE);

и измените свой main.xml:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:gravity="center_horizontal"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
                  android:orientation="vertical"
                  >
        <Button android:id="@+id/btn1" android:layout_width="100dip" 
            android:layout_height="40dip" android:text="btn1"/>       
        <Button android:id="@+id/btn2" android:layout_width="100dip" 
            android:layout_height="40dip" android:text="btn2"/>

    </LinearLayout>
0 голосов
/ 07 июня 2011

FIRST: вы должны использовать метод setVisibility следующим образом:

btn1.setVisibility(VIEW.GONE),// not setVisibility(GONE);

SECONDE: вы создали свои кнопки, но you didn't add them to your activity, (содержание вашей активности равно (R.layout.main)

попробуйте это:

super.onCreate(savedInstanceState);

    btn1 = new ImageButton(this);
    setContentView(btn1);
    btn1.setVisibility(VIEW.GONE);
    try{
          Thread.sleep(3000);//pause 3 secondes 
    }catch(Exception e){}
    btn1.setVisibility(View.VISIBLE);

РЕДАКТИРОВАТЬ:

super.onCreate (saveInstanceState);

    LinearLayout layout = new LinearLayout(this);
    ImageButton btn1 = new ImageButton(this);
    ImageButton btn2 = new ImageButton(this);
    layout.addView(btn1);
    layout.addView(btn2);
    setContentView(layout);
    btn1.setVisibility(VIEW.GONE);
    btn2.setVisibility(VIEW.VISIBLE);
    try{
          Thread.sleep(3000);//pause 3 secondes 
    }catch(Exception e){}
    btn1.setVisibility(View.VISIBLE);
    btn2.setVisibility(VIEW.GONE);
...