본문 바로가기

BackEnd/Android

기타 위젯

AutoCompleteTextView (자동완성 텍스트뷰)

    <AutoCompleteTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/autoCompleteTextView"
        android:completionHint="선택하세요"
        android:completionThreshold="2" />

 

MultiAutoCompleteTextView (멀티 자동완성 텍스트 뷰)

    <MultiAutoCompleteTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/multiAutoCompleteTextView"
        android:completionHint="선택하세요"
        android:completionThreshold="2" />

 

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AutoCompleteTextView auto = findViewById(R.id.autoCompleteTextView);
        MultiAutoCompleteTextView multi = findViewById(R.id.multiAutoCompleteTextView);

        // 자동완성에 사용할 텍스트 데이터를 String 타입 배열로 생성
        String[] items = {
                "Coffee", "Computer", "Laptop", "Radio", "Robot", "Love",
                "컴퓨터", "로봇", "로봇청소기", "청소기"
        };

        // ---------------------- AutoCompleteTextView 설정 ----------------------
        // ArrayAdapter 객체 생성 => 제네릭타입 String 지정(자동 완성에 사용될 데이터의 타입)
        // => 파라미터1) 현재 컨텍스트 전달
        // => 파라미터2) android.R.layout.XXX 형태로 자동완성텍스트가 표시될 형식(레이아웃)을 전달
        // => 파라미터3) 목록으로 사용할 데이터가 저장된 객체(String[] 또는 List 객체 등)
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, items);

        // AutoCompleteTextView 객체의 setAdapter() 메서드를 호출하여 ArrayAdapter 객체를 전달
        auto.setAdapter(adapter);

        // ---------------------- MultiAutoCompleteTextView 설정 ----------------------
        List<String> itemList = Arrays.asList(items);
        ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, items);

        MultiAutoCompleteTextView.CommaTokenizer token = new MultiAutoCompleteTextView.CommaTokenizer();
        multi.setTokenizer(token);
        multi.setAdapter(adapter2);
    }
}

 

 


 

 

ProgressBar (프로그레스 바)

    <ProgressBar
        android:id="@+id/progressBar"
        style="@style/Widget.AppCompat.ProgressBar.Horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="50"
        android:secondaryProgress="80" />
        
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btnStart"
            android:text="시작"
            android:textSize="20sp"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/btnStop"
            android:text="종료"
            android:textSize="20sp"/>

    </LinearLayout>
        ProgressBar progressBar = findViewById(R.id.progressBar);
        progressBar.setProgress(0);
        progressBar.setSecondaryProgress(50);

        Button btnStart = findViewById(R.id.btnStart);
        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 별도의 다이얼로그를 생성하여 ProgressBar 를 사용하려면 ProgressDialog 객체를 활용
                ProgressDialog dialog = new ProgressDialog(MainActivity.this);

                // ProgressBar 스타일 설정
                // 1. STYLE_HORIZONTAL : 가로막대 형식으로 표시하며, 진행상황(진척도) 등을 알릴 때 주로 사용
//                dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

                // 2. STYLE_SPINNER : 진행 중이라는 상태를 표시하기 유용하며, 중간과정 확인 불가
                dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
                dialog.setMessage("데이터 확인 중");
                dialog.show();
            }
        });

 

SeekBar (시크 바)

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    <SeekBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:id="@+id/seekBar"
        android:progress="20" />

    <TextView
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:id="@+id/tvSeekBar"
        android:text="00"
        android:textSize="20sp" />

    </LinearLayout>
        SeekBar seekBar = findViewById(R.id.seekBar);
        final TextView tvSeekBar = findViewById(R.id.tvSeekBar);
        
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        	// SeekBar 게이지가 변경될 때 호출되는 메서드
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                tvSeekBar.setText(progress + "");
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

 

RatingBar (레이팅 바)

    <RatingBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/ratingBar"
        android:numStars="5"
        android:rating="1"
        android:stepSize="0.5" />
        RatingBar ratingBar = findViewById(R.id.ratingBar);
        ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
            @Override
            public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
                Toast.makeText(MainActivity.this, "별점 : " + rating, Toast.LENGTH_SHORT).show();
            }
        });