1
생산 :토스트 잘못된 중력 수직
toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
을 ... 축배의 상단 가장자리는 화면 상단에서 약 24 픽셀이다. 축배의 배경은 약 48 픽셀 높이가됩니다. 일치? 무슨 일 이니?
생산 :토스트 잘못된 중력 수직
toast.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL, 0, 0);
을 ... 축배의 상단 가장자리는 화면 상단에서 약 24 픽셀이다. 축배의 배경은 약 48 픽셀 높이가됩니다. 일치? 무슨 일 이니?
난 안 그래도 솔루션에 대한 설명을 발견 (내가 원하는 위치 화면의 상단. 난 단지 수직 위치가 잘못된 이유를 파악하려고 거기에 넣어. 정말 아니다). 토스트 위치는 탐색 및 상태 표시 줄이 전체 화면 모드에서 숨겨져 있고 보이는 것처럼 위치를 차지하는 것을 고려하지 않습니다.
내 활동으로 전체 화면 모드를 onCreate
및 onWindowFocusChanged
으로 설정합니다. 나는 토스트를 onPostResume
에서 처리기에 게시하여 가능한 한 늦게 표시하려고 시도했지만 시스템 UI가 표시된 것처럼 여전히 동작합니다. 내가 뭔가를 누락 경우
이 내가 전체 화면 모드를 설정 해요 방법은 다음과 같습니다
@TargetApi(Build.VERSION_CODES.KITKAT)
private void enableFullScreenMode() {
int flags = View.SYSTEM_UI_FLAG_LOW_PROFILE;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
flags |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
}
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
flags |= View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
}
getWindow().getDecorView().setSystemUiVisibility(flags);
/* Calling setSystemUiVisibility directly works most of the time, but
* sometimes the navigation bar gets stuck, covering part of the UI.
* Posting it seems to prevent this. */
final int finalFlags = flags;
getWindow().getDecorView().post(new Runnable() {
@Override
public void run() {
getWindow().getDecorView().setSystemUiVisibility(finalFlags);
}
});
}
'Gravity' A는'Toast' 당신이 그것을 원하는 위치의 일반적인 문이와 함께. 절대 위치가 아닙니다. – CommonsWare
@CommonsWare 일반 위치에서 정확한 오프셋을 허용하는 API의 핵심은 무엇입니까? –
음 ... 좋은 질문입니다. 나는 다른 두 개의 매개 변수가 X와 Y 오프셋이라는 사실을 잊어 버렸습니다. 내 사과. 'Toast' 소스 코드는 그 값이'Toast' 윈도우에 사용되는'WindowManager.LayoutParams'에 들어가는 것을 보여줍니다. – CommonsWare