Skip to content Skip to sidebar Skip to footer

Dynamically Adding A Textview

In a layout file I have the following : android:layout_width='100dp' android:layout_height='wrap_content' android:layout_marginRight='10dp' android:text='SYN' an

Solution 1:

This is an interesting part of Android layouts. The XML properties that are prefixed with layout_ are actually for the containing view manager (like LinearLayout or RelativeLayout). So you need to add something like this:

//convert from pixels (accepted by LayoutParams) to dpint px = convertDpToPixel(100, this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(px, LinearLayout.LayoutParams.WRAP_CONTENT);
//convert from pixels (taken by LayoutParams.rightMargin) to dp
px = convertDpToPixel(10, this);
params.rightMargin = px;
idText.setLayoutParams(params);

And the convertDpToPixel (shamelessly adapted (change to return int instead of float) from Converting pixels to dp ):

/**
* This method converts dp unit to equivalent device specific value in pixels.
*
* @param dp      A value in dp(Device independent pixels) unit. Which we need to convert into pixels
* @param context Context to get resources and device specific display metrics
* @return An integer value to represent Pixels equivalent to dp according to device
*/publicstaticintconvertDpToPixel(float dp, Context context) {
    Resourcesresources= context.getResources();
    DisplayMetricsmetrics= resources.getDisplayMetrics();
    intpx= (int) (dp * (metrics.densityDpi / 160f));
    return px;
}

EDIT: changed the assignment to rightMargin from 10 (# of pixels) to the variable px (containing the number of pixels in 10dp) whoopsie.

Solution 2:

You might want to have a look at the

setLayoutParams()

method of the TextView class. -- android docu

Post a Comment for "Dynamically Adding A Textview"