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

选择一个可以告诉其他视图具有相同宽度和高度的视图。为了获取视图的大小,请使用以下内容:

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 回答