Cómo agregar linealmente LinearLayout con color de fondo y peso a otro diseño

Tengo LinearLayout en xml:

<LinearLayout android:id="@+id/progress" android:layout_width="fill_parent" android:layout_height="@dimen/progress_height" android:layout_alignParentBottom="true" android:baselineAligned="false" android:orientation="horizontal" /> 

y me gustaría generar dinámicamente pocos otros LinearLayouts y ponerlos a "progresar" equaly espaciados, por ejemplo:

  • El primer LinearLayout agregado ocupará todo el espacio.
  • Segundo LL compartirá el 50% del espacio con 1LL
  • Tercera LL compartirá el 33% del espacio con 1LL y 2LL
  • y así…

Cada LinearLayout tendrá color de fondo aleatorio Escribí algo como esto:

 mProgress = (LinearLayout) findViewById(R.id.progress); . . . LinearLayout prog = new LinearLayout(this); prog.setBackgroundColor(CommonUtils.getNextRandomColor()); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT, 1.0f); prog.setLayoutParams(params); mProgress.addView(prog); 

Cuando el usuario presione los botones, otro LL generará, con color diferente.

Mi método no funciona. No hay color de fondo en los diseños.

Tal vez hay otro método mucho más simple para lograr algún tipo de barra de progreso con los colores de compartir el espacio por igual?

3 Solutions collect form web for “Cómo agregar linealmente LinearLayout con color de fondo y peso a otro diseño”

Comprueba que getNextRandomColor devuelve algo como.

 getResources().getColor(colorResId); 

y no sólo un colorResId . Si ese es el caso, usted podría intentar esto.-

 prog.setBackgroundColor(getResources().getColor(CommonUtils.getNextRandomColor())); 

De todos modos, si está creando una barra de progreso multicolor, debería considerar cambiar el ancho de un solo diseño y usar un color degradado.

 LinearLayout lp = new LinearLayout(context) ; LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(width, height , .60f); lp.setLayoutParams(layoutParams); //for setting the background color // input your color LinearLayout.setBackgroundColor(Color.parseColor("#000000")); 

O

Invocar directamente un color

 lp.setBackgroundColor(Color.WHITE); 

Usted puede intentar esto.

activity_main.xml

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Add Layout" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:id="@+id/main_lay"> </LinearLayout> </LinearLayout> 

MainActivity.java

 package com.example.testlayout; import java.util.Random; import android.os.Bundle; import android.app.Activity; import android.graphics.Color; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; public class MainActivity extends Activity implements OnClickListener{ private Button add_btn; private LinearLayout main_lay; private LinearLayout.LayoutParams param; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { main_lay = (LinearLayout)findViewById(R.id.main_lay); add_btn = (Button)findViewById(R.id.button1); add_btn.setOnClickListener(this); param = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT,1); } @Override public void onClick(View v) { if(v == add_btn) { LinearLayout lay = new LinearLayout(this); lay.setLayoutParams(param); Random rnd = new Random(); int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256)); lay.setBackgroundColor(color); main_lay.addView(lay); } } } 
  • Animación en el cambio de LayoutParams en LinearLayout
  • vista de búsqueda no expandir todo el ancho
  • Ajuste automático de TextView para Android
  • Cómo obtener la altura en píxeles de LinearLayout con layout_weight
  • Tostada personalizada en la parte superior de la pantalla
  • Configuración del margen del botón mediante programación
  • Establecer LayoutParams de ListView cuando se utiliza DrawerLayout con fragmentos
  • ¿Cómo ampliar la vista sin problemas en Android?
  • Android: LayoutParams para TextView hace que la vista desaparezca, programáticamente
  • Cómo encontrar el área de texto (altura / ancho) de TextView de forma programática en android
  • Cómo deshabilitar la captura de pantalla en Android fragmento?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.