마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

같은 xhdpi인데 하단의 소프트키가 있냐 없냐에 따라 어찌처리해야될까요?

0 추천
안녕하세요.

오랜만에 글 남깁니다.ㅠㅠ

다름이 아니라 동일한 xhdpi의 폰이 두개 있는데

하나는 하단의 네비게이터 바가 소프트웨어 키이고, (베가)

하나는 하든의 네비게이터 바가 하드웨어 키입니다. (갤노트2)

이럴 경우에 베가(소프트키) 기준으로 간격이나 이런것들의 dp를 잡으니

갤노트2(하드웨어키)에서 약간 어긋나더군요.

이렇게 폼팩터는 xhdpi로 같은데 소프트웨어키와 하드웨어키가 나눠질 경우

dp로 간격이나 위치를 잡을 경우 xml에서 어찌 처리해야될까요?
소프트키가 있냐 없냐에 따라 화면 최좌측기준으로 마진을 20dp 주었는데

소프트키 유무에 따라 마진을 동일하게 20dp 주었음에도 버튼이 위치하는 곳이 달라짐이 문제점입니다.

꼭 조언부탁드립니다.

 

//집에 못가고 있어요 ㅠㅠ꼭 조언부탁드립니다.
갸아악 (21,260 포인트) 님이 2015년 9월 2일 질문
갸아악님이 2015년 9월 2일 수정

1개의 답변

0 추천

분기하셔서 처리하시면 됩니다.

아래 링크를 참고해보세요

http://stackoverflow.com/questions/16092431/check-for-navigation-bar

 

boolean hasMenuKey = ViewConfiguration.get(context).hasPermanentMenuKey();
boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);

if(!hasMenuKey && !hasBackKey) {
    // Do whatever you need to do, this device has a navigation bar
}

 

하늘아륑 (16,800 포인트) 님이 2015년 9월 2일 답변
감사합니다.
그런데 네비게이션 바의 유무에따라 분기하라 하셨는데
분기를해서 어떤 처리를 해야하는지 궁금합니다.
위에 제가 말씀드린 상황일경우 네비게이션바가 없는 폰에서는
마진 값을 코드상에서 20dp보다 더 줘야하는건가요?

정리해서 다시 말씀드리면 XML로 레이아웃을 잡을때 네비게이션이 없는 경우를 기준으로 해야하나요. 있는 것을 기준으로 잡아야 하나요?
일단 없는걸로 기준잡으시구요,
있다면 마진을 주시면 될듯합니다.

아니면 style 에서 네비바 투명을 강제로 막아버리시면, 알아서 해당 부분은 뷰영억으로 잡히지 않습니다.

<item name=”android:windowTranslucentNavigation”>false</item>

위처럼 하시면 네비바가 검은색으로 나오는대신에 원천적으로 네비바 뷰는 제어할 수 없는걸로 바뀌게되구요 그럼 따로 마진을 주지 않아도 됩니다
대신 단점은 투명 네비바를 쓸 수 없는거죠
정말 감사드립니다.!
지금 바로 해보고 답글 달을께요^^
하늘님 궁금한게 있는데요^^
없는걸 기준으로 잡으라 하셨는데
이클립스 XML 미리보기화면에서는 소프트키가 있는 것으로 미리보기가 제공되던데
XML 미리보기 화면으로 맞추면 소프트키가 있는 디바이스에서는 잘나오는데
없는 디바이스에서는 맞춰지지 않는 현상이 발생하잖아요?
그럼 XML 미리보기를 사용하지 말고 실디바이스로 계속 확인하면서 맞춰야하는건가요?
xml미리보기 상에서의 하단 네비게이션바는 뷰영역으로 잡히지 않기때문에 무시하셔도됩니다.
xml에서 편집해보시면 아시겠지만 해당영역은 투명영역이 아니라 검은색으로 영역이 잡혀있기때문에 뷰를 그부분에 끌어 넣을 수 없어요, 그러니 네비바를 생각하지 마시고 작업하시면 됩니다
...