我有一个带有以下代码的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
}
}
}
有可能吗?谢谢所有建议..
答案 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。 我没有在代码中手动执行此操作的经验。这就是为什么我的答案最初是在评论中。