Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does a view with 600dp width take up all of my Nexus 5's landscape width? [duplicate]

I am specifying a button's width as 600dp in values/dimens.xml, but when I deploy and run it on my Nexus 5 it takes up all the available width in the landscape orientation.

My activity only runs in landscape mode, as I have specified in manifest file. The layouts are in the layouts directory. The images are in the 'drawable-xxhdpi' directory and they appear fine, but everything that I specify in dp is magnified.

The previews in Android Studio and the actual device seem to behave as they have 600dp max width when it should be 1920. Why is this, and how can I fix it?

like image 702
user4092233 Avatar asked Sep 29 '14 18:09

user4092233


1 Answers

The physical width of the display on a landscape Nexus 5 is 1920 pixels, However, 600dp != 600px. The Nexus 5 has a display density of ~445 ppi. A dp is pixels only at medium density (160 ppi). Thus, everything specified in dp will be scaled by a factor of about 445/160 = 2.78125. So 600dp is actually about 1669 pixels. That should account for most of what you're seeing.

There may also be something about your layout that is stretching the button. If you post your layout xml, we might be able to provide more info.

like image 173
Ted Hopp Avatar answered Oct 13 '22 01:10

Ted Hopp