0

如何以编程方式获取支架 Android 按钮的边框宽度?我只需要调整文本的大小以适应灰色区域,但如果不知道边框的大小,我就无法做到这一点。谢谢http://s4.postimg.org/9w7idof4d/screenshot_Border_Width.png

4

3 回答 3

1

ShapeDrawable bgShape = (ShapeDrawable )btnbck.getBackground();

    Rect padding = null;
    bgShape.getPadding(padding );

按钮的图像只是一个可绘制的对象。所以你必须得到它的价值。无论如何,它可以用任何你想要的形状来做。

于 2013-06-04T19:41:41.467 回答
1

我终于找到了解决方案。微调器的默认填充恰好与按钮的边框相同。

int paddingLeft = mySpinner.getPaddingLeft();

希望它在所有设备上都是一样的。

编辑:并非所有设备都相同。我仍然没有有效的解决方案

于 2013-06-12T04:25:40.413 回答
0

这将获取按钮边框的宽度和高度:

final Button button = new Button(this);
params = new RelativeLayout.LayoutParams(50, 50);
layout.addView(button, params);
button.post(new Runnable()
{
    @Override
    public void run()
    {
         button.buildDrawingCache();
         Bitmap viewCopy = button.getDrawingCache();

         boolean stillBorder = true;
         PaddingLeft = 0;
         PaddingTop = 0;
         while (stillBorder)
         {
             int color = viewCopy.getPixel(PaddingLeft, button.getHeight() / 2);
             if (color != Color.TRANSPARENT)
                 stillBorder = false;
             else
             PaddingLeft++;
         }              
         stillBorder = true;
         while (stillBorder)
         {
             int color = viewCopy.getPixel(button.getWidth() / 2, PaddingTop);
             if (color != Color.TRANSPARENT)
                 stillBorder = false;
             else
                 PaddingTop++;
         }
     }
});
于 2013-07-08T03:48:40.553 回答