2016-09-01 2 views
0

У меня есть один счетчик, который имеет размер шрифта 14dp, 16dp и т. Д., Когда я выбираю значение из spinner Я хочу изменить размер шрифта в текстовом виде для всей активности приложения во время выполнения. Это возможно?Как изменить размер шрифта динамически во время выполнения?

Я имею в виду несколько ответ, но он не работает для меня ..

android dynamically change style at runtime

+0

вставьте свой код – droidev

ответ

2

Попробуйте этот код:

package com.packegename; 

import android.app.Activity; 
import android.os.Bundle; 
import android.util.TypedValue; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.TextView; 

public class AndroidTextSize extends Activity { 

String[] optUnit = {"COMPLEX_UNIT_DIP", 
     "COMPLEX_UNIT_IN", 
     "COMPLEX_UNIT_MM", 
     "COMPLEX_UNIT_PT", 
     "COMPLEX_UNIT_PX", 
     "COMPLEX_UNIT_SP"}; 

int[] valueUnit = { TypedValue.COMPLEX_UNIT_DIP, 
     TypedValue.COMPLEX_UNIT_IN, 
     TypedValue.COMPLEX_UNIT_MM, 
     TypedValue.COMPLEX_UNIT_PT, 
     TypedValue.COMPLEX_UNIT_PX, 
     TypedValue.COMPLEX_UNIT_SP}; 

String[] optSize ={"0.05", "0.1", "0.25", "0.5", "1", "4", "8", "10", "14", "16", "20", "30"}; 
float[] valueSize = {0.05f, 0.1f, 0.25f, 0.5f, 1f, 4f, 8f, 10f, 14f, 16f, 20f, 30f}; 

Spinner selUnit, selSize; 
TextView textOut; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     selUnit = (Spinner)findViewById(R.id.selunit); 
     selSize = (Spinner)findViewById(R.id.selsize); 
    textOut = (TextView)findViewById(R.id.textout); 

    ArrayAdapter<String> adapterUnit = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, optUnit); 
    adapterUnit.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    selUnit.setAdapter(adapterUnit); 
    selUnit.setOnItemSelectedListener(selUnitOnItemSelectedListener); 

    ArrayAdapter<String> adapterSize = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, optSize); 
    adapterSize.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    selSize.setAdapter(adapterSize); 
    selSize.setOnItemSelectedListener(selSizeOnItemSelectedListener); 
    } 

    private Spinner.OnItemSelectedListener selUnitOnItemSelectedListener 
    = new Spinner.OnItemSelectedListener(){ 

    @Override 
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
    long arg3) { 
    // TODO Auto-generated method stub 
    updateTextSize(); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 

    }}; 

private Spinner.OnItemSelectedListener selSizeOnItemSelectedListener 
= new Spinner.OnItemSelectedListener(){ 

    @Override 
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, 
    long arg3) { 
    // TODO Auto-generated method stub 
    updateTextSize(); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
    // TODO Auto-generated method stub 

    }}; 

private void updateTextSize(){ 
    int unit = valueUnit[selUnit.getSelectedItemPosition()]; 
    String strUnit = optUnit[selUnit.getSelectedItemPosition()]; 
    float size = valueSize[selSize.getSelectedItemPosition()]; 
    String strSize = optSize[selSize.getSelectedItemPosition()]; 

    textOut.setTextSize(unit, size); 
    textOut.setText(strUnit + " : " + strSize); 
} 
} 

выше код работает для одного вида деятельности, а также для одного или TextView другой вид .. использовать этот код глобально для всей деятельности приложения изменить

создать один класс. TextFontSize.class реализовать класс с сериализуемыми изменениями

updateTextSize() к.

public static void updateTextView(TextView theTextView, float theSize) { 


     theTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, theSize); 


    } 

    public static void updateEditText(EditText theEditText, float theSize) { 


     theEditText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, theSize); 


    } 

и любой другой вид макета просто создайте метод, как указано выше.

и использовать эту функцию любую активность приложения, как

private void setAllFontSizeOf(float theSize) { 
     TextVFontsize.updateTextView(textview, theSize); 

     TextFontSize.updateEditText(Edittext,theSize); 

    } 

и, наконец, объявить этот метод конкретной деятельности.

+0

можно изменить размер в dp? –

+0

сделано .. стоит пример спасибо –

+0

Если это помогло, примите ответ, пожалуйста – LychmanIT

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