Dynamically adding a Textview
android, android-layout, textview
Solution
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 dp
int 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
*/
public static int convertDpToPixel(float dp, Context context) {
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
int px = (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.
Problem
In a layout file I have the following : ``` android:layout_width="100dp" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:text="SYN" android:textAppearance="?android:attr/textAppearanceMedium" android:background="@drawable/rectanglepurple" android:textColor="#000000" android:gravity="right"/> ``` I am attempting to achieve the following using code and so far I have : ``` Resources res = getResources(); Drawable drawable1=res.getDrawable(R.drawable.rectanglepurple); TextView idText = new TextView(getActivity()); idText.setText("SYN"); idText.setTextAppearance(getActivity(), android.R.style.TextAppearance_Medium); idText.setTextColor(Color.BLACK); idText.setGravity(Gravity.RIGHT); idText.setBackgroundDrawable(drawable1); ``` I cant workout how to deal with ``` android:layout_width="100dp" android:layout_height="wrap_content" android:layout_marginRight="10dp" ``` Any help appreciated.