1

プログラムでスタンドのAndroidボタンの境界線の幅を取得するにはどうすればよいですか? 灰色の領域に収まるようにテキストのサイズを変更し、他のオブジェクトをボタンのインラインに配置する必要があるだけですが、境界線のサイズを知らずにそれを行うことはできません。すべての API 7 以降で動作するには、これが必要です。下の画像の赤い矢印は、取得しようとしているものを示しています。

ボーダー幅

ボタンの作成に使用するコードは次のとおりです。

cmdView = new Button(this);
params = new RelativeLayout.LayoutParams(widthLblViewVerbs , (int) fieldHeight);
params.leftMargin = (int) (screenWidth - params.width);
params.topMargin = (int) yPos;
cmdView.setSingleLine();
cmdView.setText("View");
cmdView.setPadding(0, 0, 0, 0);
cmdView.setTextSize(TypedValue.COMPLEX_UNIT_PX, SetTextSize(cmdView.getText().toString(), params.width, params.height));
layout.addView(cmdView, params);

注意。前回、誰かが私の質問に反対票を投じたので、この質問を再度しなければなりませんでした。解決策を切望しています。これと別の問題に悩まされているため、数週間でプログラムがまったく進歩しませんでした. 私の質問について不明な点がある場合は、お知らせください。編集します。ありがとうございました

4

4 に答える 4

1

質問についてはあまり明確ではありません-基になるビューのマージンを設定してから、ボタンのサイズを一致させたいですか? 次に、試しましたか

ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) view.getLayoutParams();

マージンには次の方法でアクセスできます

lp.leftMargin;
lp.rightMargin;
lp.topMargin;
lp.bottomMargin;

詳細はこちら: http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html

于 2013-06-29T01:56:15.193 に答える
1

これは、ボタンの境界線の幅と高さを取得します。

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:51:20.127 に答える