Android 向按钮动态添加黑色边框
在这里,我想添加一个黑色的边界动态b/w每个按钮 正如您可以看到的灰色按钮,它们由于颜色相同而混合在一起。我想要一条黑线或任何东西,每个按钮都有。所以我可以区分它。 希望你理解我的问题 下面是代码Android 向按钮动态添加黑色边框,android,android-layout,android-custom-view,Android,Android Layout,Android Custom View,在这里,我想添加一个黑色的边界动态b/w每个按钮 正如您可以看到的灰色按钮,它们由于颜色相同而混合在一起。我想要一条黑线或任何东西,每个按钮都有。所以我可以区分它。 希望你理解我的问题 下面是代码 int i = 1; int nLeftStartPnt = 18; int nTopStartPnt = 0; int nMarkerHeight = 28;
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()));
}
});
}
inti=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);
对于(i=1;i
您应该使用layout\u marginleft,以便灰色按钮之间有“0.1dp”的间隙
设置灰色按钮的左边距
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
考虑使用带边距的LinearLayout,它可以做到这一点并保持代码的整洁
。。。事实上,按钮只是一个具有自定义背景的文本视图,而您刚刚将花式按钮替换为自定义按钮。我找到了解决方案 更新代码
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()));
}
});
}
FrameLayout布局=(FrameLayout)findViewById(R.id.MarkerLinearlayout);
对于(i=1;i
这个参数是什么?我是android新手,请帮帮我?你能提供更多帮助吗?或者你能编辑我的答案吗?请将FrameLayout更改为LinearLayout,然后将LinearLayout.LayoutParams lp=新的LinearLayout.LayoutParams(宽度、高度)lp.rightMargin=边距;layout.addView(bMarkerBtn);=>布局。添加视图(bMarkerBtn,lp);到底是什么不起作用?可以用xml中的按钮填充LinearLayout吗?您也可以使用LayoutInflater从xml中为按钮充气。充气但setBackgroundDrawable在API16中被弃用,因此为了绝对正确,请执行类似操作manishiKa,您有任何示例代码吗?我搜索到没有所谓的设置边界。它只是一个链接,点击它。