1

我有一个带有以下代码的styles.xml:

<resources>
     <style name="general_font" parent="@android:style/TextAppearance"> 
        <item name="android:textSize">12sp</item>
    </style>
</resources>

我也有一个布局(general_layout.xml),其中包括一个文本视图

<TextView 
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:text="@string/text1"
   style="@style/general_font"/>

现在,在我的活动中,在内容准备好之前,我想根据屏幕高度更改 general_font 样式中的 textSize。

所以这是我的活动课:

public class GeneralActivity extends Activity{

    public void onCreate(Bundle savedInstanceState){        
        super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            scaleTextSize(getHeightOfScreen());
            setContentView(R.layout.general_layout);

    }

    private int getHeightOfScreen(){
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        return metrics.heightPixels;
    }

    public void scaleTextSize(int height){

        if(height<=320){
            // Change textSize item of general_font style
        }
        else if(height<=480){
            // Change textSize item of general_font style
        }
        else if(height<=800){
            // Change textSize item of general_font style
        }
        else{
            // Change textSize item of general_font style
        }
    }
}

是否可以 ??谢谢大家的建议。。

4

1 回答 1

0

我们在评论中讨论的总结答案:

我会为不同的屏幕尺寸创建不同的样式,并使用布局文件(/res/layout)中的样式。如下所述区分布局文件:Android Developer Docs about Supporting multiple screensizes

如果您不想做太多,那么为您需要的每个屏幕布局使用一个主题。主题适用于您的整个应用程序/活动。定义样式的主题将位于 /res/values 文件夹中。例如 /res/values-h800dp。请参阅此问题以了解与您类似的问题:Use different theme based on if device is android tablet or phone。我没有在代码中手动执行此操作的经验。这就是为什么我的答案最初出现在评论中。

于 2013-02-14T12:41:29.467 回答