我需要连续创建 4 个宽度相等的按钮。我知道如何使用线性布局和权重来做到这一点,但这对我来说不太可接受。我还有一些与我的 4 个按钮相关的其他视图,所以我想在相对布局中做所有事情。是否可以?
问问题
3175 次
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 回答