일단 해보는 코딩/Android

[Android] Weight 속성 및 이벤트 처리

eun_zoey2 2022. 10. 4. 11:04
728x90

■ 화면을 구현하는데  weight을 사용하여 비율을 조절한다.

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".WeightActivity">

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

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="red"
        android:layout_weight="1"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="green"
        android:layout_weight="1"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="blue"
        android:layout_weight="1"/>

    </LinearLayout>
</LinearLayout>

 

■ 버튼의 배경색을 변경하려면 themes.xml 속에 있는 코드를 살짝 수정해준다.  

 

<style name="Theme.Ex_1004" parent="Theme.MaterialComponents.DarkNight.DarkActionBar">
이 부분을 
<style name="Theme.Ex_1004" parent="Theme.AppCompat.Light.DarkActionBar">

 

버튼 세개 밑으로 뷰를 하나 생성해준다.  ( weight 속성을 넣어 비율을 다 잡아줌! )

 

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#000"
    android:layout_weight="1"
    android:textColor="#fff"
    android:text="결과"
    android:textSize="40dp"
    android:gravity="center"
    android:id="@+id/txt"/>

 

 

버튼을 누르면  배경색이 변경되는 이벤트 효과 반영하기!

 

package com.jyh.ex_1004;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class WeightActivity extends AppCompatActivity {

    Button bRed, bGreen, bBlue;
    TextView txt;


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

        // onCreate() 영역은 액티비티 실행시 가장 먼저 호출되는 영역

            // 이벤트에 사용한 버튼과 택스트뷰 객체들을 검색
        bRed = findViewById(R.id.btn_red);
        bGreen = findViewById(R.id.btn_green);
        bBlue = findViewById(R.id.btn_blue);
        txt = findViewById(R.id.txt);

        // 버튼들에게 이벤트 처리
        bRed.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 텍스트뷰의 배경색을 변경하기
                //Color.parseColor("#f00") 로 축약해서 사용할 수 없다. 반드시 6자리로 !
                txt.setBackgroundColor(Color.parseColor("#ff0000"));
                txt.setText("빨강");

            }
        });

        // 초록색 버튼과 파란색 버튼은 감지자를 하나로 묶어서 처리
        bGreen.setOnClickListener( click );
        bBlue.setOnClickListener( click );

   } //onCreate

    View.OnClickListener click = new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            switch ( view.getId()){
                case R.id.btn_green:
                    txt.setBackgroundColor(Color.parseColor("#00ff00"));
                    txt.setText("초록");
                    txt.setTextColor(Color.BLACK);
                    break;
                case R.id.btn_blue:
                    txt.setBackgroundColor(Color.parseColor("#0000ff"));
                    txt.setText("파랑");
                    txt.setTextColor(Color.WHITE);
                    //Toast.makeText( Context,CharSequence,int)
                    //Context:화면 제어권자 - 현재 액티비티에 대한 정보를 요구하는 클래스
                    Toast.makeText(WeightActivity.this,"파란색누름", Toast.LENGTH_SHORT).show();
                    break;

            }
        }
    };
}

 

 

 

 

출력 결과