我可以在尺寸和尺寸上进行数学运算吗?变量?

时间:2014-07-15 13:39:23

标签: android android-styles dimension

我是最近进入Android项目的客户端开发人员。

在客户端世界中,我们获得了像SASS这样的框架,让我们可以对变量进行数学运算。

在Android样式资源中,我们获得了Variables和Dimensions。我的问题是,它是否有可能在Android中实现这一点。

例如:

dimens.xml
<dimen name="baseFontSize">18sp</dimen>

styles.xml
<style name="heading1">
    <item name="android:textSize"> @dimen/baseFontSize * 2.5 </item>
    ...
</style>

我定义了一个基本字体大小单位,并在所有应用程序中播放它。

如果不可能,最好使用 Android Way 来实现它。

1 个答案:

答案 0 :(得分:2)

您可以创建一个主控制器来处理所有比例集。

例如,您有一个布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/my_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"
        android:textSize="16sp" />

</RelativeLayout>

您希望按android:textSize="16sp"中的比例缩放文字大小dimens.xml

dimens.xml

中创建比例汇率
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <item name="scaleRate" format="float" type="dimen">2.5</item>

</resources>

在您创建主控制器之后:

package com.example.stackoverflowsandbox;

import android.content.Context;
import android.widget.TextView;

public class MyScaleController {

    public static void applyTextSizeScale( final Context context, final TextView myTextView ) {
        final float currentTextSize = myTextView.getTextSize();

        myTextView.setTextSize( currentTextSize * context.getResources().getDimension( R.dimen.scaleRate ) );
    }
}

所以你这样使用:

package com.example.stackoverflowsandbox;

import android.app.Activity;
import android.widget.TextView;

public class MainActivity extends Activity {
    @Override
    protected void onCreate( final android.os.Bundle savedInstanceState ) {
        super.onCreate( savedInstanceState );

        this.setContentView( R.layout.activity_main );

        final TextView myTextView = ( TextView ) this.findViewById( R.id.my_text_view );

        MyScaleController.applyTextSizeScale( this, myTextView );
    }
}

现在,您可以为多种屏幕尺寸创建多种尺度比例。你第一次想做什么,在XML文件中制作数学计算,不会起作用。但是我觉得你有最好的方法。