He golpeado esto desde varios ángulos diferentes. Básicamente, la esencia es esta:android: LayoutParams for TextView hace desaparecer la vista, programáticamente
He presentado una plantilla en XML para una interfaz que NECESITA ejecutar programáticamente, por lo que se completará dinámicamente durante la ejecución.
El problema aquí, es que XML TextView tiene bastantes ajustes de diseño (que funcionan) y son necesarios. Pero si realmente los configuro en código, el TextView ni siquiera aparece.
(La TextView, por cierto, está anidado dentro de un TableRow, por tanto, la llamada a peso.) La plantilla XML he diseñado en primer lugar, para utilizar como referencia para el código es esto, y funciona muy bien:
<TextView
android:id="@+id/txtviewWhiteBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:background="@drawable/textview_9patch_white"
android:gravity="center"
android:text="75"
android:textColor="@android:color/black"
android:layout_margin="20dp"
android:padding="20dp"
android:textSize="40dp" />
Como dije, eso se explica perfectamente. Sin embargo, cuando ejecuto el mismo diseño en código y aplico LayoutParams, TextView desaparece.
He aquí el fragmento relevante:
int textViewExampleID = 9001;
private TextView txtviewExample = new TextView(this);
private void buildTextView(){
LayoutParams paramsExample = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,1.0f);
txtviewExample.setId(textViewExampleID);
txtviewExample.setBackgroundResource(R.drawable.textview_9patch_white);
txtviewExample.setGravity(Gravity.CENTER);
txtviewExample.setTextColor(getResources().getColor(android.R.color.black));
paramsExample.setMargins(20, 20, 20, 20);
txtviewExample.setPadding(20, 20, 20, 20);
txtviewExample.setTextSize(40);
txtviewExample.setText("customExample");
//if I comment out the following line, this TextView displays.
//if I leave it in, it doesn't display.
txtviewExample.setLayoutParams(paramsExample);
}
Soy consciente de que hay todo tipo de clases disponibles para LayoutParams, y he estado jugando con ellos todos LinearLayout.LayoutParams, TableView.LayoutParams, RelativeLayout.LayoutParams, LayoutParams solo por sí mismo ... No importa cuál intente, cualquier intento de invocar "setLayoutParams" hace que todo TextView desaparezca. He recorrido los foros aquí y todavía no he encontrado la respuesta. Esto no puede ser ESO poco común.
Ha intentado 'TableRow.LayoutParams' http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html –
SOLO lo hice, (perdido este comentar anoche, maldición) y funcionó. Gracias hombre – Octoth0rpe
De nada :) –