是否可以将LinearLayout与layout_height =" match_parent"和layout_width属于高度的一半?
然后我会将这些布局放在较大的HorizontalScrollView中,让布局保持所需的宽高比。
如果没有创建我自己的处理它的布局,这可能吗?
答案 0 :(得分:3)
您需要一个自定义ViewGroup。 Google有一个名为ProportionalLayout的版本 - 它不是Android SDK的一部分,因此您必须将源代码复制到您的应用中才能在XML布局中使用它。
您还需要将其添加到res/values/attrs.xml
:
<declare-styleable name="ProportionalLayout">
<attr name="direction" format="string"/>
<attr name="ratio" format="float"/>
</declare-styleable>
答案 1 :(得分:0)
您可以通过获取布局高度以编程方式执行此操作,然后将宽度设置为该大小的一半。
LinearLayout layout = (LinearLayout)findViewById(R.id.numberPadLayout);
int height = layout.getHeight();
LayoutParams params = layout.getLayoutParams();
params.height = height;
params.width = height/2;
答案 2 :(得分:0)
我在一个月前遇到过这个问题。找到了解决它的唯一方法: 在布局文件中,make width = match_parent,height = 0dp或者其他什么!
在onCreate方法中添加你的活动add onGlobalLayoutListener()。当测量所有小部件的所有高度和宽度时,将调用此方法。所以你可以通过mLinearLayout.getWidth()得到你的宽度;
void onCreate(..) {
...
mLinearLayout = getViewById(R.id.your_layout);
mFrameLayout.getViewTreeObserver().addOnGlobalLayoutListener(myOnGlobalLayoutListener);
}
OnGlobalLayoutListener myOnGlobalLayoutListener =new OnGlobalLayoutListener(){
@Override
public void onGlobalLayout() {
if (!mFlag) {
mFlag = true;
mLinearLayout.setLayoutParams(mLinearLayout.getWidth(), mLinearLayout.getWidth() / 2));
}
}
};
抱歉我的英文! 希望它会对你有所帮助!