어떤 목록을 보여줄 때 팝업으로 보여주고 싶다면 ListPopupWindow 위젯을 사용해야한다.
팝업 메뉴와 유사하지만 목록을 어댑터로 받는 점이 특이하다.
void setWidth(int width)
void setHeight(int height)
void setContentWidth(int width)
폭과 높이는 픽셀 단위로 지정한다.
void setAdapter(ListAdapter adapter)
void setAnchorView(View anchor)
위의 메소드는 어댑터와 앵커 뷰를 지정한다.
void setModal(boolean modal)
위의 메소드는 팝업 목록의 동작 방식을 지정한다. 모달일 때는 선택을 해도 팝업이 자동으로 닫히지 않으며 팝업 바깥을 눌러야 닫힌다.
void setOnItemSelectedListener(AdapterView.OnItemSelectedListener selectedListener)
void setOnItemClickListener(AdapterView.OnItemClickListener clickListener)
위 메소드를 통해서 선택 변경이나 클릭 동작에 대한 이벤트 리스너를 등록한다.
activity_list_popup_window_test.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"
>
<Button
android:id="@+id/btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="mOnClick"
android:text="Button"/>
</LinearLayout>
ListPopupWindowTest.java
package com.example.ch13_lispopupwindow;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListPopupWindow;
public class ListPopupWindowTest extends Activity {
Button mBtn;
ListPopupWindow mList;
public String[] Colors = {
"Red", "Green", "Blue", "Yellow", "Cyan", "Magenta"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_popup_window_test);
mBtn = (Button)findViewById(R.id.btn);
mList = new ListPopupWindow(this);
mList.setWidth(300);
mList.setHeight(300);
mList.setAnchorView(mBtn);//버튼이 눌리면 리스트팝업윈도우가 나온다.
mList.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, Colors));//어댑터 연결
mList.setModal(true);//선택을 해도 자동으로 팝업이 닫히지 않게 한다.
mList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position,
long id) {
// TODO Auto-generated method stub
//선택된 값에 따라 버튼의 백그라운드 색을 바꾼다.
switch(position){
case 0:
mBtn.setBackgroundColor(Color.RED);
break;
case 1:
mBtn.setBackgroundColor(Color.GREEN);
break;
case 2:
mBtn.setBackgroundColor(Color.BLUE);
break;
case 3:
mBtn.setBackgroundColor(Color.YELLOW);
break;
case 4:
mBtn.setBackgroundColor(Color.CYAN);
break;
case 5:
mBtn.setBackgroundColor(Color.MAGENTA);
break;
}
}
});
}
public void mOnClick(View v){
if(mList.isShowing()){
mList.dismiss();
}else{
mList.show();
}
}
}
실행 화면
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 - 윈도우 관리자 활용하기 (0) | 2015.09.05 |
---|---|
안드로이드 - LayoutInflater를 활용한 레이아웃 겹치기 (0) | 2015.08.30 |
안드로이드 - 타이틀 바 조작하기 (풀스크린 만들기) (0) | 2015.08.30 |
안드로이드 - Application 객체를 이용한 전역 변수 만들기 (0) | 2015.08.26 |
안드로이드 - CalendarView로 쉽게 달력을 만들자 (11) | 2015.08.23 |
안드로이드 - NumberPicker를 이용한 숫자 선택하는 위젯 만들기 (0) | 2015.08.16 |
안드로이드 - 위젯의 배치를 편리하게 해주는 Space 위젯 (0) | 2015.08.16 |
안드로이드 - 스위치(Switch) 만들어서 편리하게 토글하기 (0) | 2015.08.16 |