Android - dimens.xml文件的别名?

时间:2014-02-28 05:35:26

标签: android xml android-layout

我正在尝试让我的Android应用程序支持多种屏幕尺寸。我正在尝试通过使用不同的dimens.xml文件更改布局的dp值来将替代布局保持在最低限度。

糟糕的部分是我有9个不同的文件夹,其中包含尺寸文件(值,值-sw320dp,值-sw480dp,值-sw600dp和值-sw720dp用于更高的api,值 - 小,值 - 正常,值 - 较大的,值为xlarge for old apis)我讨厌将我的sw值文件夹中的粘贴复制到旧的值文件夹中。

我知道如何创建layout.xml文件别名like this shows,但有人知道你是否可以为尺寸文件做到这一点?我尝试在我的values.xml中创建多个文件,但当然它不起作用,因为我的两个文件具有相同名称的属性,这会导致冲突。

我可以在values-sw600dp dimens-large.xml中命名我的尺寸文件,并在values-large文件夹中引用它吗?

2 个答案:

答案 0 :(得分:2)

您可以动态更改布局组件的大小。 在这里,我根据480 * 854大小的屏幕创建第一个xml布局。下面的代码根据屏幕大小自动调整UI。

int width = 0;
int height = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);

    getTheDisplay();
    getUiComponents();
    adjustUIComponents();

}private void getTheDisplay() {

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    width = dm.widthPixels;
    height = dm.heightPixels;

}private void adjustUIComponents() {
    // myButton is button from layout xml file
    adjustUI(myButton);

}private void adjustUI(View v) {
    //myButton is in LinearLayout
       LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams)v.getLayoutParams();
    lp.width = calculateWidth(211);//211 is width of button in px given in xml
    lp.height = calculateHeight(80);//80 is height of button in px given in xml

    v.setLayoutParams(lp);
}private int calculateWidth(int w) {
    int wi = (w * width) / 480;
    return wi;
}

private int calculateHeight(int h) {
    int hi = (h * height) / 854;
return hi;
}

答案 1 :(得分:0)

我最终使用了Merlevede的建议,并在eclipse的构建路径中添加了一个脚本。

具体来说,选择android项目,转到Project - >属性 - >建设者 - >新

创建“程序”构建器,然后选择可在文件系统上本机执行的文件。就个人而言,我写了一个3行java应用程序,震惊了,然后编写了一个只调用java jar的批处理文件。批处理文件是我指定为构建器的可执行文件。

然后我将该构建器放在构建列表的顶部,瞧,我的文件正在被自动复制!