본문 바로가기

안드로이드

토스트 모양과 위치 바꾸기, 스낵바 띄우기

반응형
https://dogrushdev.tistory.com/233
setGravity로 토스트 위치 수정
API 30 이상부터는 토스트의 위치를 바꾸려면 모양도 바꿔야한다

https://aroundck.tistory.com/39
LayoutInflater에 대한 설명

 

 

res/drawable/toast.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >
    <stroke
        android:width="10dp"
        android:color="#ff0000ff"
        />
    <solid
        android:color="#ffff0000"
        />
    <padding
        android:left="10dp"
        android:top="10dp"
        android:right="10dp"
        android:bottom="10dp"
        />
    <corners
        android:radius="10dp"
        />
</shape>

 

 

res/layout/toastborder.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toast_layout_root"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    >
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="20dp"
        android:textSize="32dp"
        android:background="@drawable/toast"
        />
</LinearLayout>

 

 

activity_main.xml

<?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"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="onButton1Clicked"
        android:text="모양 바꿔 띄우기" />
</LinearLayout>

 

 

 

MainActivity

package com.example.a14_sampletoast;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import org.w3c.dom.Text;

public class MainActivity extends AppCompatActivity {

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

    public void onButton1Clicked(View v) {

        LayoutInflater inflater = getLayoutInflater();

        View layout = inflater.inflate(R.layout.toastborder, findViewById(R.id.toast_layout_root));

        TextView text = layout.findViewById(R.id.text);

        Toast toast = new Toast(this);
        text.setText("모양 바꾼 토스트");
        toast.setGravity(Gravity.CENTER, 0, -100);
        toast.setDuration(Toast.LENGTH_SHORT);
        toast.setView(layout);
        toast.show();
    }
}

 

 

 

스낵바

    public void onButton2Clicked(View v) {
        Snackbar.make(v, "스낵바", Snackbar.LENGTH_LONG).show();
    }

 

반응형

'안드로이드' 카테고리의 다른 글

프로그레스바  (0) 2021.10.12
알림 대화상자  (0) 2021.10.12
단말 방향 전환 - 액티비티는 그대로 유지  (0) 2021.10.11
단말 방향 전환 이벤트  (0) 2021.10.11
키 이벤트  (0) 2021.10.11