0

幅が等しい4つのボタンを一列に作成する必要があります。線形レイアウトとウェイトを使用してそれを行う方法は知っていますが、それは私には受け入れられません。4 つのボタンに関連する他のビューがいくつかあるので、相対レイアウト内ですべてを実行したいと考えています。出来ますか?

4

3 に答える 3

1

ボタンの幅を標準サイズに設定するのはどうですか?

<Button
    android:width="75dp"
    ... />

添加

実行時に表示の幅を見つけるには:

int width = getWindowManager().getDefaultDisplay().getWidth() / 4; 
// Set this width to your buttons
于 2012-06-01T21:43:47.653 に答える
0

同じ幅と高さを持つように他のビューに指示するビューの1つを選択します。ビューのサイズを取得するには、次のようなものを使用します。

private static void runJustBeforeBeingDrawn(final View view, final Runnable runnable)
{
    final ViewTreeObserver vto = view.getViewTreeObserver();
    final OnPreDrawListener preDrawListener = new OnPreDrawListener()
    {
        @Override
        public boolean onPreDraw()
        {
            Log.d(App.APPLICATION_TAG, CLASS_TAG + "onpredraw");
            runnable.run();
            final ViewTreeObserver vto = view.getViewTreeObserver();
            vto.removeOnPreDrawListener(this);
            return true;
        }
    };
    vto.addOnPreDrawListener(preDrawListener);
}

runJustBeforeBeingDrawnの代替:https ://stackoverflow.com/a/28136027/878126

于 2012-06-01T21:53:15.710 に答える
0

確かなことはわかりませんが、ウェイトタグなしでこれを行う唯一の方法は、ランタイム/プログラムでセットアップすることだと思います。これを行うには、次のよう に、 integer.xmlに定数を設定します。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="numberOfButtons">4</integer>
</resources>

また、Adapter / Activityクラスでは、次のようになります。

DisplayMetrics dm = new DisplayMetrics();
// dm holds your structure of resolution
context.getWindowManager().getDefaultDisplay().getMetrics(dm);

int width = dm.getWidth();
btn1.setWidth(width/getInteger(R.integer.numberOfButtons));
btn2.seTwidth(width/getInteger(R.integer.numberOfButtons));
btn3.seTwidth(width/getInteger(R.integer.numberOfButtons));
btn4.seTwidth(width/getInteger(R.integer.numberOfButtons));

これが何らかの形でお役に立てば幸いです。

于 2012-06-01T21:54:37.333 に答える