Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Different sizes on 2 devices, even if I use "dp"

I've 2 tablets:

1 Samsung Android 3.0

    DisplayMetrics {density=1.0, width=600, height=976, 
scaledDensity=1.0, xdpi=161.55031, ydpi=155.51021}

1 Low cost device, Android 2.3.3

    DisplayMetrics {density=1.0, width=480, height=800, 
scaledDensity=1.0, xdpi=160, ydpi=160.42105}

If I use different layout for each screen size, both devices says they are large-long and mdpi, so I can't distinguish them by using layout folder names... The problem is:

I use a TextView with textSize="20dp"

In the firse device, text width is half of the screen, in the second device is bigger (80% of the screen width). Why? I expect that both devices display text in the same way if I use dp (and not px). I tried also with sp but nothing changes...

(I used TextView as example, I've the same problem with all elements in the layout: button sizes, ...)

I would try to use layout folder names like "layout-w600dp" or something else introduced in Android 3.2 but this is not the case.

I know I can change element dimensions by code in onLayout() but I don't want to do that...

Any suggestion?

Update

I solved my problems with layouts using themes: Activate a specific dimens.xml at runtime

like image 968
Seraphim's Avatar asked Jun 06 '12 08:06

Seraphim's


1 Answers

The android documentation on Dimention say this

The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion

So it's totally ok what you see

You can achieve 50% of the screen using LinearLayout weigth..Refer this

like image 70
logcat Avatar answered Sep 30 '22 17:09

logcat