Adición dinámica de una vista de texto

En un archivo de diseño tengo lo siguiente:

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"/> 

Estoy intentando alcanzar el siguiente código de uso y hasta ahora tengo:

 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); 

No puedo entrenar cómo lidiar con

  android:layout_width="100dp" android:layout_height="wrap_content" android:layout_marginRight="10dp" 

Cualquier ayuda apreciada.

Esta es una parte interesante de los diseños de Android. Las propiedades XML que están prefijadas con layout_ son en realidad para el gestor de vistas que contiene (como LinearLayout o RelativeLayout). Así que necesitas agregar algo como esto:

 //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); 

Y el convertDpToPixel (descaradamente adaptado (cambio para devolver int en lugar de float) de convertir píxeles a 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: cambió la asignación a rightMargin de 10 (# de píxeles) a la variable px (que contiene el número de píxeles en 10dp) whoopsie.

Es posible que desee echar un vistazo a la

  setLayoutParams() 

de la clase TextView. – documentos android

  • El tamaño de fuente diferente de las cadenas en el mismo TextView
  • ¿Es posible mostrar textos digitales en TextView en Android?
  • Android consigue el ancho de la vista creada mediante programación
  • ¿Qué es android: includeFontPadding?
  • ¿Cómo puedo dar la parte superior en blanco cuando agrego el textview programmatically?
  • ¿Es posible tener múltiples tipos de letra en el mismo TextView?
  • TextView onClick () no funciona
  • Declare EditText como TextView en Android
  • Alinear la imagen dibujable dentro de una vista de texto para centrarse
  • .length () vs .getText (). Length () vs .getText (). ToString (). Length ()
  • "RequestLayout () incorrectamente llamado por ..." error en Android 4.3
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.