AlertDialog seekbar 사용 방법

Fragment에서 AlertDialog+seekbar 사용

Fragment에서 AlertDialog+seekbar 사용

seebar를 위한 코드는 MainActivity에 구현한다.

해당 함수의 파라미터로 Fragment의 값을 받는다.

파라미터로 받은 Fragment의 값에서 Context를 취득한다.

1
2
3
public static void dlp_li_act(RemoconFragment a) {
//파라미터로 받은 Fragment에서 getContext()를 사용 Context를 취득한다.
final AlertDialog.Builder alert = new AlertDialog.Builder(a.getContext());

아래 소스와 같이 AlertDialog에 View를 설정하고

SeekBar의 setProgress()를 통해 초기값을 설정하고

setOnSeekBarChangeListener를 통해서 SeekBar의 값이 변할 때 정의를 내려준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public static void dlp_li_act(RemoconFragment a) {
final AlertDialog.Builder alert = new AlertDialog.Builder(a.getContext());
alert.setTitle("밝기 조정");
final LayoutInflater inflater = (LayoutInflater) a.getContext().getSystemService(LAYOUT_INFLATER_SERVICE);

final View Viewlayout = inflater.inflate(R.layout.light_dialog,
(ViewGroup) a.getView().findViewById(R.id.layout_dialog));

alert.setView(Viewlayout);

SeekBar seek1 = (SeekBar) Viewlayout.findViewById(R.id.seekBar1);
seek1.setProgress(li);
seek1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
Message msg = new Message();
msg.obj = "Li:" + progress;
writeHandler.sendMessage(msg);
li = progress;
}

public void onStartTrackingTouch(SeekBar arg0) {
}

public void onStopTrackingTouch(SeekBar seekBar) {
}
});

alert.setPositiveButton("확인", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
alert.show();

}

Fragment에서 사용시

Fragment에서 사용시 아래와 같이 파라미터를 넘겨 준다.

1
MainActivity.dlp_li_act(RemoconFragment.this);

레이아웃 구성

xml을 구성해 AlertDialog에서 seekbar의 레이아웃을 구현한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_dialog"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30px"
android:layout_marginRight="30px"
android:orientation="vertical" >
<SeekBar
android:id="@+id/seekBar1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/txtItem1"
android:layout_marginTop="17dp"
android:max="8"
/>
</LinearLayout>
</RelativeLayout>

android:max에서 seekbar의 최대값을 지정한다.

공유하기