4

values/dimens.xml에 버튼의 너비를 600dp로 지정하고 있지만 Nexus 5에 배포하고 실행할 때 가로 방향의 사용 가능한 모든 너비가 필요합니다.너비가 600dp 인보기가 내 Nexus 5의 가로 너비를 모두 차지하는 이유는 무엇입니까?

매니 페스트 파일에 지정된대로 내 활동은 가로 모드에서만 실행됩니다. 레이아웃은 layouts 디렉토리에 있습니다. 이미지는 'drawable-xxhdpi'디렉토리에 있으며 괜찮아 보이지만, dp에 지정된 모든 항목이 확대됩니다.

Android Studio 및 실제 장치의 미리보기는 최대 너비가 600dp이므로 1920 년에 동작해야합니다. 이유는 무엇이며 어떻게 해결할 수 있습니까?

+1

http://stackoverflow.com/questions/2025282/difference-between-px-dp-dip-and-sp-in-android – nhaarman

답변

6

가로 Nexus 5 디스플레이의 실제 너비는 1920 픽셀이지만 600dp! = 600px입니다. Nexus 5의 디스플레이 밀도는 ~ 445ppi입니다. dp는 중간 밀도 (160ppi)에서만 픽셀입니다. 따라서, dp에 지정된 모든 것은 약 445/160 = 2.78125의 비율로 축척됩니다. 따라서 600dp는 실제로 약 1669 픽셀입니다. 그것은 당신이보고있는 대부분의 것을 설명해야합니다.

버튼을 늘리는 레이아웃에 대해서도있을 수 있습니다. 레이아웃 xml을 게시하면 더 많은 정보를 제공 할 수 있습니다.

+0

아 맞습니다. 그래서 저는 1920x1080의 디자인을 가지고 있기 때문에 dimens.xml을 설정하기 전에 모든 요소를 ​​그 요소로 나누어야합니다. 흠 ... 그래서'dp'가 이미이 마술을하고있을 때 swXXXXdp 디렉토리 아래에 다른 dimens.xml 파일이 있어야하는 이유는 무엇입니까? – user4092233

+0

@ user4092233 자세한 내용은 http://developer.android.com/training/multiscreen/index.html을 참조하십시오. –

+0

@ user4092233 - 다른 구성에 다른 dimens.xml 파일을 사용하는 경우는 거의 없습니다. 예를 들어, 화면 크기에 따라 다른 크기를 원할 수 있습니다. 예를 들어 큰 화면에서는보기 주위에 1/2 인치 여백이 필요할 수 있습니다. 따라서 픽셀 밀도에 관계없이 80dp의 여백을 지정할 수 있습니다 (이는 mdpi 장치에서는 80 픽셀이지만 Nexus 5에서는 223 픽셀과 비슷합니다). 작은 화면에서는 여백이 20dp 인 1/8 인치 여백 만 있으면됩니다. 밀도와 무관 한 차원의 경우,'/ res/values-nodpi/dimens.xml'과 dp가 아닌 px를 사용하십시오. –