我在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" />
我想动态生成另外一些LinearLayouts并将它们等分为“progress”,例如:
每个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);
当用户按下按钮时,将生成另一个LL,颜色不同。
我的方法不起作用。布局中没有背景颜色。
也许有另一种更简单的方法来实现某种进度条,颜色共享一些空间?
答案 0 :(得分:7)
仔细检查getNextRandomColor
是否会返回类似.-
getResources().getColor(colorResId);
而不仅仅是colorResId
。如果是这种情况,你可以试试这个.-
prog.setBackgroundColor(getResources().getColor(CommonUtils.getNextRandomColor()));
无论如何,如果您正在构建多色进度条,则应考虑更改单个布局的宽度,并使用渐变颜色。
答案 1 :(得分:4)
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"));
OR
直接调用颜色
lp.setBackgroundColor(Color.WHITE);
答案 2 :(得分:1)
你可以试试这个。
<强> 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);
}
}
}