0

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

正如您所看到的灰色按钮,它们由于相同的颜色而混合在一起。我想要一条黑线或任何东西 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()));
                }
            });
     }
4

3 回答 3

2

您应该使用 layout_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
于 2013-09-11T10:42:37.243 回答
0

考虑使用带边距的 LinearLayout,它会做的事情并保持你的代码干净

...实际上 Button 只是一个具有自定义背景的 TextView,而您只是将花哨的替换为自定义。

于 2013-09-11T10:47:28.080 回答
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()));
                }
            });
     }
于 2013-09-11T11:10:49.110 回答