2013-02-14 5 views
1

У меня есть 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 
     } 
    } 
} 

Можно ли ?? Спасибо все советы ..

+0

Я бы создал разные стили для разных размеров экрана и использовал стили в файлах макета (/ res/layout). Отличайте файлы макета, как описано здесь: http://developer.android.com/guide/practices/screens_support.html – Minsky

+0

Спасибо за комментарий. Да, но есть на вещи, о которых я не упоминал. В макете у меня есть 8 textView.I хочу, чтобы все стили текстовых источников были из одного стиля. Если я создаю разные стили, должен ли я перебирать все текстовые поля в setStyle Right? Я не хочу итерации всех текстовых просмотров, я хочу изменить только один элемент, и все текстовые эффекты используют эту функцию. –

+0

Если вы не хотите делать слишком много, используйте тему для каждого экрана, который вам нужен. Тема предназначена для всего вашего приложения/деятельности. Темы, определяющие стили, будут находиться в папках/res/values. Например/res/values-h800dp. См. Этот вопрос по той же проблеме, что и ваша: http://stackoverflow.com/questions/8148749//use-different-theme-depends-on-if-device-is-android-tablet-or-phone. У меня нет опыта делать это вручную в коде. Вот почему мой ответ в комментариях. – Minsky

ответ

0

Суммарный ответ от нашего обсуждения в комментариях:

Я хотел бы создать различные стили для различных размеров экрана и использовать стили в файлах макета (/ RES/макета). Отличайте файлы макетов, как описано здесь: Android Developer Docs about Supporting multiple screensizes

Если вы не хотите делать слишком много, то используйте тему для каждого макета экрана, в котором вы нуждаетесь. Тема предназначена для всего вашего приложения/деятельности. Темы, определяющие стили, будут находиться в папках/res/values. Например/res/values-h800dp. См. Этот вопрос по той же проблеме, что и ваша: Use different theme depending on if device is android tablet or phone. У меня нет опыта делать это вручную в коде. Вот почему мой ответ был первоначально в комментариях.

Смежные вопросы