我有一个申请。我放入所有尺寸的值-sw330dp / dimens.xml。我也有值-sw266dp / dimens.xml,我把相同的项目,但比率为0.8。它对我有用,这里没有问题。
是否可以自动完成这项工作?我想仅在值-sw330dp / dimens.xml中填充值,当我构建项目时,Gradle将生成具有指定比率的值-sw266dp / dimens.xml。
答案 0 :(得分:2)
您可以使用名为dimenify的奇妙工具自动为mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi生成维度值,您只需输入任何值并使用right-click
- > generate
将能够自动生成您想要的所有其他值,并且使用相同的宽高比,您也可以提供平板电脑尺寸。
答案 1 :(得分:0)
您可以将“布局”窗口小部件宽度定义为match_parent
,将高度定义为wrap_content
。然后定义一些全球比率参数。
然后程序化做类似的事情:
layoutView.addOnLayoutChangeListener(
new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange (View v,
int left,
int top,
int right,
int bottom,
int oldLeft,
int oldTop,
int oldRight,
int oldBottom) {
viewHeightPixel = (int) (layoutView.getWidth() / VIEW_RATIO);
ViewGroup.LayoutParams lp;
lp = layoutView.getLayoutParams();
if (lp.height != viewHeightPixel ) {
lp.height = viewHeightPixel ;
layoutView.setLayoutParams(lp);
}
layoutView.removeOnLayoutChangeListener(this);
}
}
);
这样你就不会"绑定"您对特定高度/宽度的看法会在更改比率/尺寸时使您的生活变得困难