Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I set Layout and Text size to DP inside program?

Basically I have this inside XML, but I have to recreate it inside a code. How do I do it?

<EditText          android:layout_width="140dp"         android:layout_height="20dp"         android:background="@drawable/input_bg01"         android:textSize="10dp"         android:gravity="center"         android:text="111-222-333     FOOO" /> 

I can use this to set text size, but what about the layout_width and height?

edTxt.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 10); 

Is there a way to tell the code to use DP unit instead of pixel? Or a conversion function to convert DP into pixel?

like image 293
RobGThai Avatar asked Jul 23 '10 08:07

RobGThai


2 Answers

You can use:

float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, getResources().getDisplayMetrics()); 

Now the value of pixels is equivalent to 10dp at the device's current screen density.

The TypedValue contains other similar methods that help in conversion.

like image 163
Santosh Avatar answered Sep 30 '22 14:09

Santosh


Solved here.

Extract:

DisplayMetrics metrics = getContext().getResources().getDisplayMetrics(); float dp = 20f; float fpixels = metrics.density * dp; int pixels = (int) (fpixels + 0.5f); 
like image 23
sven Avatar answered Sep 30 '22 14:09

sven