在Android中更改程序中的样式项

时间:2013-02-14 11:29:04

标签: android textview android-styles

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

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

我还有一个布局(general_layout.xml),其中包含一个textview

<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
        }
    }
}

有可能吗?谢谢所有建议..

1 个答案:

答案 0 :(得分:0)

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

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

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