setVisibility를 사용해보자
setVisibility를 사용해보자
- setVisibility를 사용하면 View나 위젯, 레이아웃등을 숨기거나 없애거나 다시보이게 할 수 있다.
- setVisibility는 사용법이 아주 쉽고 실제로도 활용이 많이 된다.
일단 버튼 3개를 생성해봅니다.
[activity_main.xml]
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_invisible"
android:text="Invisible"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_gone"
android:text="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn_visible"
android:text="visible"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
뭐 이런 모양이고
각각 버튼을 클릭하면
Invisible, gone, visible이
실행되도록
코드를 짜보겠습니다.
[MainActivity.java]
public class MainActivity extends ActionBarActivity
{
Button btn_gone;
Button btn_invisible;
Button btn_visible;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setup();
}
private void setup()
{
btn_gone = (Button)findViewById(R.id.btn_gone);
btn_invisible = (Button)findViewById(R.id.btn_invisible);
btn_visible = (Button)findViewById(R.id.btn_visible);
btn_gone.setOnClickListener(myListener);
btn_invisible.setOnClickListener(myListener);
btn_visible.setOnClickListener(myListener);
}
View.OnClickListener myListener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.btn_gone :
v.setVisibility(View.GONE);
break;
case R.id.btn_invisible :
v.setVisibility(View.INVISIBLE);
break;
case R.id.btn_visible :
btn_gone.setVisibility(View.VISIBLE);
btn_invisible.setVisibility(View.VISIBLE);
break;
}
}
};
}
간단한 코드입니다.
단어뜻 그대로
VISIBLE(보이고),
INVISIBLE(안보이고),
GONE(없어진)
느낌 그대로입니다.
살짝 추가설명이
필요한 부분은
INVISIBLE과 GONE의 차이입니다.
INVISIBLE은 눈에 안보일뿐
공간차지를 합니다.
GONE은 아에 사라져서
공간차지를 안하게 됩니다.
INVISIBLE과 GONE을 눌렀을때 차이를 보겠습니다.
INVISIBLE 눌렀을때
버튼이 사라지긴 했지만
공간은 남아있습니다.
GONE 눌렀을때
버튼과 공간 둘다 사라짐으로
인하여 VISIBLE 버튼이
위로 올라오게 되었습니다.
다음은 setVisibility를
약간 Switch형식으로
쓰는방법을 알아보겠습니다.
뭐 이미지라던가
어떤 뷰를 사라지게 했다 없앴다
하는 느낌으로~
[activity_main.xml]
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_switch"
android:text="Switch"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<RatingBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ratingBar"
android:layout_gravity="center_horizontal" />
</LinearLayout>
뭐를 넣을까 하다가
RatingBar 별모양이
이뻐보여서 선택했습니다.
Switch 버튼 하나로
저 별을 없앴다 보였다가
제어해보겠습니다.
public class MainActivity extends ActionBarActivity
{
Button btn_switch;
RatingBar ratingBar;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setup();
}
private void setup()
{
ratingBar = (RatingBar)findViewById(R.id.ratingBar);
btn_switch = (Button)findViewById(R.id.btn_switch);
btn_switch.setOnClickListener(myListener);
}
View.OnClickListener myListener = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
ratingBar.setVisibility(ratingBar.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
}
};
}
뭐 볼건 저 빨간줄 하나입니다.
버튼을 클릭했을때
별을 getVisibility로 상태를 얻어와서
VISIBLE 상태이면 GONE을 시키고
아니면(GONE상태) VISIBLE 시켜라.
이런 코드입니다..
짧으면서도 유용한 코드이죠
여기서 핸들러만 추가해주면
원하는 만큼
깜빡깜빡 이는것처럼 효과도 가능하겠죠?
'안드로이드(android) > View' 카테고리의 다른 글
TextView 내부 크기 구하기 - Rect, getPaint() (1) | 2016.10.17 |
---|---|
View를 최상위로 올리기 - BringToFront (0) | 2016.10.15 |
TextView가 물흐르듯 움직인다? marquee를 써보자 (0) | 2016.06.14 |
다른 Activity(액티비티), Fragment에 있는 View값 가져오기 (1) | 2016.04.28 |
[안드로이드]화면 해상도 구하기 및 View의 가로,세로 구하기 (2) | 2016.04.23 |