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); } } } 
  • Establecer LayoutParams de ListView cuando se utiliza DrawerLayout con fragmentos
  • Android: LayoutParams para TextView hace que la vista desaparezca, programáticamente
  • Configuración de los parámetros de diseño en android
  • WindowManager.LayoutParams ¿por qué hay un método setTitle?
  • ¿Cómo puedo eliminar mediante programación una regla existente que se definió en XML?
  • View.getLayoutParams (). Anchura que no funciona con el turrón
  • Establecer margen en RecyclerView mediante programación
  • Android Salir del modo de pantalla completa
  • Creación de una vista redimensionable ListAdapter-recycleable
  • Animación en el cambio de LayoutParams en LinearLayout
  • ¿Cómo se cambia el tamaño de un ImageView?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.