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:
- Autolink dentro de un TextView en android
- Android: textisselectable no funciona en la ventana TYPE_SYSTEM_ALERT
- Cómo mostrar la cadena dependiendo del ancho del diseño
- Cómo escribo una fracción en el estudio android
- Volver a establecer una altura de TextView mediante programación
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.
- Cómo animar el textview (texto muy largo) desplazarse automáticamente horizontalmente
- Llamar TextView.setText () vuelve a dibujar toda la pantalla a pesar de la jerarquía de vista
- Android TextView Problema de enfoque en listview (sólo MarshMallow)
- Cómo alinear un elemento a la derecha de su centro de padres? (Diseños de Android)
- Configuración de textview en la parte inferior de android
- Onclick evento en textview (que tiene TextIsSelectable = "true") es ony llamado en segundo clic
- Obtener la altura de un TextView
- Evitar el empaquetado de palabras en ciertas palabras (nombre de dominio) en android
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