如何以编程方式将LinearLayout添加背景颜色,并将权重添加到另一个布局

Bre*_*siu 6 android android-layout android-linearlayout layoutparams

我在xml中有LinearLayout:

    <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" />
Run Code Online (Sandbox Code Playgroud)

我想生成动态几个另一LinearLayouts并把他们的"进步" equaly间隔,例如:

  • 添加的第一个LinearLayout将占用所有空间.
  • 第二个LL将与1LL共享50%的空间
  • 第三LL将分享33%的空间,1LL和2LL
  • 等等...

每个LinearLayout都会有随机的背景颜色,我写的是这样的:

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);
Run Code Online (Sandbox Code Playgroud)

当用户按下按钮时,将生成另一个LL,颜色不同.

我的方法不起作用.布局中没有背景颜色.

也许有另一种更简单的方法来实现某种进度条,颜色共享一些空间?

ssa*_*tos 8

仔细检查getNextRandomColor返回的东西.-

getResources().getColor(colorResId);
Run Code Online (Sandbox Code Playgroud)

而不只是一个colorResId.如果是这样的话,你可以试试这个.-

prog.setBackgroundColor(getResources().getColor(CommonUtils.getNextRandomColor()));
Run Code Online (Sandbox Code Playgroud)

无论如何,如果您正在构建多色进度条,则应考虑更改单个布局的宽度,并使用渐变颜色.


小智 5

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"));
Run Code Online (Sandbox Code Playgroud)

或者

直接调用颜色

lp.setBackgroundColor(Color.WHITE);
Run Code Online (Sandbox Code Playgroud)