我需要创建4个宽度相等的按钮。我知道如何使用线性布局和权重,但这对我来说是不可接受的。我有一些与我的4个按钮相关的其他视图,所以我想在相对布局中做所有事情。有可能吗?
答案 0 :(得分:1)
如何将按钮的宽度设置为标准尺寸?
<Button
android:width="75dp"
... />
<强>加成强>
要在运行时找到显示的宽度:
int width = getWindowManager().getDefaultDisplay().getWidth() / 4;
// Set this width to your buttons
答案 1 :(得分: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
答案 2 :(得分: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));
的
希望这会以某种方式帮助你。