У меня есть styles.xml с этим коды:Изменение элемента стиля в программе в Android
<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"/>
Теперь, в моей деятельности, прежде чем контент будет готов, я хочу изменить textSize в стиле general_font в соответствии с высотой экрана.
Так что это мой класс деятельности:
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
}
}
}
Можно ли ?? Спасибо все советы ..
Я бы создал разные стили для разных размеров экрана и использовал стили в файлах макета (/ res/layout). Отличайте файлы макета, как описано здесь: http://developer.android.com/guide/practices/screens_support.html – Minsky
Спасибо за комментарий. Да, но есть на вещи, о которых я не упоминал. В макете у меня есть 8 textView.I хочу, чтобы все стили текстовых источников были из одного стиля. Если я создаю разные стили, должен ли я перебирать все текстовые поля в setStyle Right? Я не хочу итерации всех текстовых просмотров, я хочу изменить только один элемент, и все текстовые эффекты используют эту функцию. –
Если вы не хотите делать слишком много, используйте тему для каждого экрана, который вам нужен. Тема предназначена для всего вашего приложения/деятельности. Темы, определяющие стили, будут находиться в папках/res/values. Например/res/values-h800dp. См. Этот вопрос по той же проблеме, что и ваша: http://stackoverflow.com/questions/8148749//use-different-theme-depends-on-if-device-is-android-tablet-or-phone. У меня нет опыта делать это вручную в коде. Вот почему мой ответ в комментариях. – Minsky