Як приховати кнопку програмно?


152

У мене є RelativeLayoutякий містить дві кнопки. Які перекриваються один на одного.

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


<Button android:text="Play"  
    android:id="@+id/play"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom = "true">
</Button>

<Button android:text="Stop "
    android:id="@+id/stop" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:layout_alignParentBottom = "true">
</Button>


</RelativeLayout>

Я хочу програмно показати лише одну кнопку одночасно, коли викликається подія її клацання.

Я спробував це:

playButton.setVisibility(1);

але це не спрацювало. Далі наводимо приклад того, що я намагаюся зробити.

playButton = (Button) findViewById(R.id.play);
playButton.setVisibility(1);
playButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        //when play is clicked show stop button and hide play button

    }
});

Відповіді:


308

Ви можете використовувати наступний код:

playButton = (Button) findViewById(R.id.play);
playButton.setVisibility(View.VISIBLE);
playButton.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        //when play is clicked show stop button and hide play button
        playButton.setVisibility(View.GONE);
        stopButton.setVisibility(View.VISIBLE);
    }
});

2
Дякую sunil :) чи можете ви скажіть різницю між View.VISIBLe та 1 (це просто перерахунок)?
Вамсі Крішна Б

1
Чому встановлено Visisibility на 1? Це не будь-яке постійне значення.
pqsk

4
View.GONE робить елемент не займає місця для макета. View.INVISIBLE резервує простір для елемента. Це змінює макет перегляду, коли ви перемикаєте видимість.
gb96

77

Спробуйте наведений нижче код -

playButton.setVisibility(View.INVISIBLE);

або -

playButton.setVisibility(View.GONE);

покажіть це знову за допомогою -

playButton.setVisibility(View.VISIBLE);



5
public void OnClick(View.v)
Button b1 = (Button) findViewById(R.id.playButton);
b1.setVisiblity(View.INVISIBLE);


4

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

@Override
public void onClick(View v) {
    String curText = ((TextView)v).getText();                 

    if(curText.equals("Play")){
        ((TextView)v).setText("Stop");
    }

    if(curText.equals("Stop")){
        ((TextView)v).setText("Play");
    }
 }

Мені подобається ваша ідея, що насправді те, що я роблю в iphone перемиканні однієї кнопки, щоб робити багато речей. Але я новачок в android, чи можете ви, будь ласка, вказати мені на приклад, як це зробити ..
Rishi

4
        Button button = (Button) findViewById(R.id.myButton);
        //set to visible
        button.setVisibility(View.VISIBLE);
        //set to invisble      
        button.setVisibility(View.INVISIBLE);
       //or
        button.setVisibility(View.GONE);


2

Будь ласка, спробуйте: playButton = (Button) findViewById(R.id.play); playButton.setVisibility(View.INVISIBLE);я думаю, що це вдасться.



1

Код Котліна набагато простіше:

if(isVisable) {
    clearButton.visibility = View.INVISIBLE
}
else {
    clearButton.visibility = View.VISIBLE
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.