기록 #01: 컴퓨터
안드로이드 토스트 위치 제어
JinH
2016. 4. 19. 16:30
메뉴 아이템에 android:icon
이거랑 app:showAsAction
이 값을 주면 액션바에 아이콘이 나타난다. 이 때 아이콘을 롱터치하면 토스트가 화면 아래쪽 가운데 정렬이 아닌, 아이콘 바로 아래에, 아이콘 가운데에서 왼쪽으로 뻗치는 정렬이 되서 나타난다.
그림으로 표현하면 아래처럼 보이겠지?
Toast
#1: 일반적인 상황 |
Toast
#2: 액션바의 노란 아이콘을 터치 |
이거를 액션바 아이콘 말고 다른 뷰를 눌러도 나오도록 메소드를 만듦.
private void Toast_ActionBar(View view, String string) {
int[] location = new int[2];
view.getLocationOnScreen(location);
Point windowSize = new Point();
getWindowManager().getDefaultDisplay().getSize(windowSize);
Toast t = Toast.makeText(getApplicationContext(), string, Toast.LENGTH_SHORT);
t.setGravity(
Gravity.TOP | Gravity.RIGHT,
windowSize.x - location[0] - view.getWidth() / 2,
location[1] + view.getHeight() / 2
);
t.show();
}
뷰의 절대 위치, 뷰의 크기, 그리고 스크린의 크기를 조합해서 토스트가 쀼려질 위치를 결정함.
이렇게 해서 롱터치 했을 때 나오는 설명은 바로 아래에 토스트로 나오게 만들고, 나머지 알림은 모두 스낵바로 바꿈.
끝.