动态添加黑色边框到按钮

时间:2013-09-11 10:32:46

标签: android android-layout android-custom-view

这里我想动态添加黑色边框,每个按钮。

正如您可以看到灰色按钮,由于颜色相同,它们会混合在一起。我想要一个黑色的线条或任何东西b / w每个按钮。所以我可以区分它。

enter image description here

希望你了解我的问题。?

以下是代码

                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()));
                }
            });
     }

3 个答案:

答案 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()));
                }
            });
     }