这里我想动态添加黑色边框,每个按钮。
正如您可以看到灰色按钮,由于颜色相同,它们会混合在一起。我想要一个黑色的线条或任何东西b / w每个按钮。所以我可以区分它。
希望你了解我的问题。?
以下是代码
int i = 1;
int nLeftStartPnt = 18;
int nTopStartPnt = 0;
int nMarkerHeight = 28;
int nMarkerVwActualWidth = 780;
int nMarkerWidth = 50;
int nlen = 10;
int nsetPaddingTop = 123;
int nsetPaddingLeft = 0;
FrameLayout layout = (FrameLayout) findViewById(R.id.MarkerLinearlayout);
for(i = 1; i < nlen ; i++)
{
Button bMarkerBtn = new Button(this);
layout.addView(bMarkerBtn);
bMarkerBtn.setId(i);
bMarkerBtn.setX(nsetPaddingLeft + i);
//bMarkerBtn.setTop(nsetPaddingTop);
bMarkerBtn.setWidth(nMarkerWidth);
bMarkerBtn.setHeight(nMarkerHeight);
// bMarkerBtn.getTotalPaddingLeft()
// bMarkerBtn.setPadding(2,0, 0, 0);
if(i == 0)
{
bMarkerBtn.setBackgroundColor(Color.DKGRAY);
}
if(i == 1)
{
bMarkerBtn.setBackgroundColor(Color.BLUE);
}
if(i == 2)
{
bMarkerBtn.setBackgroundColor(Color.RED);
}
if(i == 3)
{
bMarkerBtn.setBackgroundColor(Color.GREEN);
}
if(i == 4)
{
bMarkerBtn.setBackgroundColor(Color.BLUE);
}
if(i == 5)
{
bMarkerBtn.setBackgroundColor(Color.YELLOW);
}
if(i == 6)
{
bMarkerBtn.setBackgroundColor(Color.GRAY);
}
if(i == 7)
{
bMarkerBtn.setBackgroundColor(Color.GRAY);
}
if(i == 8)
{
bMarkerBtn.setBackgroundColor(Color.GRAY);
}
if(i == 9)
{
bMarkerBtn.setBackgroundColor(Color.GRAY);
}
if(i == 10)
{
bMarkerBtn.setBackgroundColor(Color.GRAY);
}
nsetPaddingLeft = nsetPaddingLeft + nMarkerWidth +1;
// Log.d("Button Click","Clicked ON "+ Integer.toString(i));
bMarkerBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Log.d("Button Click","Clicked ON "+ Integer.toString(view.getId()));
}
});
}
答案 0 :(得分:2)
你应该使用layout_marginleft,以便有一个&#34; 0.1dp&#34;灰色按钮之间 设置灰色按钮的左边距
params.setMargins();
layout.addView(button, params);
你需要使用参数来设置与
相同的保证金 android:layout_marginLeft=""
android:layout_marginRight=""
android:layout_marginTop=""
and android:layout_marginBottom=""
params.setMargins(left, top, right, bottom);
layout.addView(button, params);
Add params.setMargins(1,0,0,0); for gray buttons
答案 1 :(得分:0)
考虑将LinearLayout与边距一起使用,它会完成并保持代码清洁
...实际上Button只是一个带有自定义背景的TextView,你只需将花哨的一个替换为自定义。
答案 2 :(得分:0)
我得到了解决方案!!!!
更新代码
FrameLayout layout = (FrameLayout) findViewById(R.id.MarkerLinearlayout);
for(i = 1; i < nlen ; i++)
{
Button bMarkerBtn = new Button(this);
GradientDrawable drawable = new GradientDrawable();
drawable.setShape(GradientDrawable.RECTANGLE);
drawable.setStroke(1, Color.BLACK);
layout.addView(bMarkerBtn);
bMarkerBtn.setId(i);
bMarkerBtn.setX(nsetPaddingLeft + i);
//bMarkerBtn.setTop(nsetPaddingTop);
bMarkerBtn.setWidth(nMarkerWidth);
bMarkerBtn.setHeight(nMarkerHeight);
// bMarkerBtn.setPadding(2,0, 0, 0);
if(i == 0)
{
drawable.setColor(Color.DKGRAY);
}
if(i == 1)
{
drawable.setColor(Color.BLUE);
}
if(i == 2)
{
drawable.setColor(Color.RED);
}
if(i == 3)
{
drawable.setColor(Color.GREEN);
}
if(i == 4)
{
drawable.setColor(Color.BLUE);
}
if(i == 5)
{
drawable.setColor(Color.YELLOW);
}
if(i == 6)
{
drawable.setColor(Color.GRAY);
}
if(i == 7)
{
drawable.setColor(Color.GRAY);
}
if(i == 8)
{
drawable.setColor(Color.GRAY);
}
if(i == 9)
{
drawable.setColor(Color.GRAY);
}
if(i == 10)
{
drawable.setColor(Color.GRAY);
}
bMarkerBtn.setBackgroundDrawable(drawable);
nsetPaddingLeft = nsetPaddingLeft + nMarkerWidth +1;
// Log.d("Button Click","Clicked ON "+ Integer.toString(i));
bMarkerBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Log.d("Button Click","Clicked ON "+ Integer.toString(view.getId()));
}
});
}