안드로이드스튜디오 토스트메세지 안뜨는 이유가 뭔지 좀 확인 부탁드립니다 ㅠㅠ

조회수 1184회

안녕하세요,

코린인데 안드로이드스튜디오 독학 중입니다.

아래와 같이 토스트메세지에 그래비티를 설정했는데 버튼만 뜨고 메세지가 뜨질 않아요ㅠㅠ

AMD를 nexus 5 뭐시기에서 pixel 뭐시기로 바꾸면 토스트메세지가 뜨긴하는데 설정한 gravity로 뜨진 않아요 ㅠㅠ

도대체 뭐가 문젠지 모르겠어요 ㅠㅠ 고수님들 제발 좀 알려주세요 ㅠㅠ

package org.techtown.toast;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast toast = Toast.makeText(getApplicationContext(),"위치가 바뀐 토스트",Toast.LENGTH_LONG);
                toast.setGravity(Gravity.TOP|Gravity.LEFT,200,200);
                toast.show();
            }
        });

     }
}

1 답변

  • Toast#setGravity

    토스트 클래스의 setGravity 문서를 확인하시면 버전 R 혹은 그 이상을 타게팅 하면서 단순 텍스트 토스트일 경우에는 작동하지 않는다고 나와있습니다.

    커스텀 뷰를 넣은 토스트를 사용하시면 될것같습니다.

    아래는 간단하게 커스텀 뷰를 넣는 스니펫입니다.

    // MainActivity.java
    findViewById(R.id.main_button1).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.d(TAG, "onClick: ");
                    LayoutInflater inflater = getLayoutInflater();
                    View layout = inflater.inflate(R.layout.custom_toast,
                            (ViewGroup) findViewById(R.id.custom_toast_container));
    
                    TextView text = (TextView) layout.findViewById(R.id.text);
                    text.setText("This is a custom toast");
    
                    Toast toast = new Toast(getApplicationContext());
                    toast.setGravity(Gravity.TOP|Gravity.LEFT,200,200);
                    toast.setDuration(Toast.LENGTH_LONG);
                    toast.setView(layout);
                    toast.show();
                }
            });
    
    <LinearLayout 
    <!-- custom_toast.xml -->
    xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/custom_toast_container"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="8dp"
        android:background="#DAAA"
        >
        <TextView android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#FFF"
            android:text="TOAST"
            />
    </LinearLayout>
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)