[android] Establecer el peso de diseño de un TextView programáticamente



4 Answers

La respuesta es que debe usar TableRow.LayoutParams, no LinearLayout.LayoutParams o cualquier otro LayoutParams.

TextView tv = new TextView(v.getContext());
LayoutParams params = new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
tv.setLayoutParams(params);

Los diferentes LayoutParams no son intercambiables y si utiliza el incorrecto, parece que no ocurre nada. El padre de la vista de texto es una fila de la tabla, por lo tanto:

http://developer.android.com/reference/android/widget/TableRow.LayoutParams.html

Question

TableRow crear dinámicamente objetos TableRow y agregarlos a TableLayout . Los objetos TableRow tienen 2 elementos, un TextView y un CheckBox . Los elementos de TextView deben tener su peso de diseño establecido en 1 para empujar los elementos de CheckBox a la extrema derecha.

No puedo encontrar documentación sobre cómo establecer programáticamente el peso de diseño de un elemento TextView .




simplemente establece parámetros de diseño en ese diseño como

crear la variable param

 android.widget.LinearLayout.LayoutParams params = new android.widget.LinearLayout.LayoutParams(
            LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, 1f);

1f es variable de peso

establece tu widget o diseño como

 TextView text = (TextView) findViewById(R.id.text);
 text.setLayoutParams(params);



TextView text = new TextView(v.getContext());
text.setLayoutParams(new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, 
                                                LayoutParams.WRAP_CONTENT, 1f));

(O)

TextView tv = new TextView(v.getContext());
LayoutParams params = new TableRow.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1f);
tv.setLayoutParams(params);

1f se refiere como peso = 1; según su necesidad puede dar 2f o 3f, las vistas se moverán según el espacio. Para establecer la distancia especificada entre las vistas en el diseño lineal, use el peso para "LinearLayout".

LinearLayout ll_Outer= (LinearLayout ) view.findViewById(R.id.linearview);
LinearLayout llInner = new LinearLayout(this);
            LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FillParent, LinearLayout.LayoutParams.WrapContent);
            llInner.Orientation = Orientation.Horizontal;
            llInner.WeightSum = 2;
            ll_Outer.AddView(llInner);



Este trabajo para mí, y espero que funcione para usted también

Primero configure los LayoutParams para la vista principal:

myTableLayout.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.FILL_PARENT,
                TableLayout.LayoutParams.FILL_PARENT));

luego configurado para TextView (hijo):

 TableLayout.LayoutParams textViewParam = new TableLayout.LayoutParams
     (TableLayout.LayoutParams.WRAP_CONTENT,
     TableLayout.LayoutParams.WRAP_CONTENT,1f);
     //-- set components margins
     textViewParam.setMargins(5, 0, 5,0);
     myTextView.setLayoutParams(textViewParam); 



Hay otra forma de hacer esto. En caso de que necesite establecer solo un parámetro, por ejemplo 'altura':

TextView textView = (TextView)findViewById(R.id.text_view);
ViewGroup.LayoutParams params = textView.getLayoutParams();
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
textView.setLayoutParams(params);





Related