프로그래밍 방식으로 버튼을 숨기는 방법?


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의 차이점을 알려주시겠습니까?
Vamsi Krishna B

1
왜 Visibility를 1로 설정합니까? 그것은 상수 값이 아닙니다.
pqsk

4
View.GONE은 항목이 레이아웃 공간을 차지하지 않도록합니다. INVISIBLE은 항목을위한 공간을 예약합니다. 가시성을 토글 할 때 뷰의 레이아웃이 변경됩니다.
gb96

77

아래 코드를 사용해보십시오-

playButton.setVisibility(View.INVISIBLE);

또는-

playButton.setVisibility(View.GONE);

다시 표시-

playButton.setVisibility(View.VISIBLE);

8

아래에서 사용하십시오

View.GONE and 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");
    }
 }

나는 당신의 아이디어가 실제로 내가 아이폰에서 여러 작업을 수행하기 위해 단일 버튼을 토글하는 일을 좋아하지만, 안드로이드에 익숙하지 않다면, 어떻게 해야하는지에 대한 예를 알려 주시겠습니까?
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
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.