Android 向按钮动态添加黑色边框

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;

在这里,我想添加一个黑色的边界动态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()));
                }
            });
     }
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,您有任何示例代码吗?我搜索到没有所谓的设置边界。它只是一个链接,点击它。