weightsum studio sirve que para linearlayout layout_weight examples ejemplo caracteristicas android layout textview android-layout-weight

android - studio - Establecer el peso de diseño de un TextView programáticamente



linearlayout para que sirve (11)

Estoy tratando de crear dinámicamente objetos TableRow y agregarlos a un 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 al extremo derecho.

No puedo encontrar documentación sobre cómo establecer mediante programación el peso del diseño de un elemento de TextView .


En las respuestas anteriores, el peso se pasa al constructor de un nuevo objeto SomeLayoutType.LayoutParams. Aún así, en muchos casos es más conveniente usar objetos existentes: ayuda a evitar tratar con parámetros en los que no estamos interesados.

Un ejemplo:

// Get our View (TextView or anything) object: View v = findViewById(R.id.our_view); // Get params: LinearLayout.LayoutParams loparams = (LinearLayout.LayoutParams) v.getLayoutParams(); // Set only target params: loparams.height = 0; loparams.weight = 1; v.setLayoutParams(loparams);


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

Establezca primero los LayoutParams para la vista principal:

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

a continuación, establezca para el 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);


Esto debería funcionar para usted

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT LayoutParams.MATCH_PARENT); param.weight=1.0f;


Hay otra manera 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);


La respuesta es que tiene que 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, entonces no parece que suceda nada. El padre de la vista de texto es una fila de tabla, por lo tanto:

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


También puedes dar peso por separado así.

LayoutParams lp1 = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT); lp1.weight=1;


Tienes que usar TableLayout.LayoutParams con algo como esto:

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

El último parámetro es el peso.


Tuve bastante dificultad con una solución algo muy similar a esto: tratar de tener dos botones en un TableRow, cada uno de ellos con la mitad del ancho de la pantalla. Por el motivo que sea, el botón izquierdo siempre tendrá aproximadamente el 70% del ancho y el botón derecho el 30%. Llamar a table_layout.setStretchAllColumns (true) no tuvo ningún efecto, ni tampoco configuró el ancho del botón en la mitad de la pantalla, ni tampoco configuró su peso de diseño.

La solución con la que terminé fue anidar un LinearLayout en TableRows, que tuvo en cuenta el valor del ancho de los botones.

TableLayout layout = new TableLayout(this); TableRow top_row = new TableRow(this); left_button = styleButton(); right_button = styleButton(); LinearLayout toprow_layout = new LinearLayout (this); toprow_layout.setOrientation(LinearLayout.HORIZONTAL); toprow_layout.addView (left_button); toprow_layout.addView(right_button); toprow.addView(top_layout); layout.addView(top_row) private Button styleButton() { Button btn = new Button (this); android.view.Display display = ((android.view.WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); btn.setWidth((int)(display.getWidth()/2)); // set width to half btn.setHeight(((int)display.getHeight()/6)); // set height to whatevs btn.setText("foo"); return btn; }


acaba de establecer parámetros de diseño en ese diseño como

crear variable param

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

1f es peso variable

configura 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; De acuerdo con su necesidad, puede dar 2f o 3f, las vistas se moverán según el espacio. Para realizar la distancia especificada entre vistas en el diseño lineal, utilice weightum 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);


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

1f es denota como peso = 1; puedes dar 2f o 3f, las vistas se moverán de acuerdo al espacio