隨著app越來(lái)越人性化,這就造成了需求的越加變態(tài),這里,我想向所有移動(dòng)開發(fā)的同仁說(shuō),干死需求他丫的,好了,廢話說(shuō)到這里,下面進(jìn)入正題,如何全局改變字體大小,首先Activity繼承Baseactivity:
[java] view plain copy
public class MainActivity extends BaseActivity { ?
??
??
????@Override ?
????protected void onCreate(Bundle savedInstanceState) { ?
????????super.onCreate(savedInstanceState); ?
????????setContentView(R.layout.activity_main); ??
????} ?
} ?
?
然后在BaseActivity里做了這么一件事,
[java] view plain copy
public class BaseActivity extends Activity { ?
????private int states = 3; ?
??
????@Override ?
????protected void onCreate(Bundle savedInstanceState) { ?
??
??
????????super.onCreate(savedInstanceState); ?
??
??
????????if (1 == states) { ?
????????????setTheme(R.style.Default_TextSize_Small); ?
??
??
????????} else if (2 == states) { ?
??
??
????????????setTheme(R.style.Default_TextSize_Middle); ?
????????} else { ?
????????????setTheme(R.style.Default_TextSize_Big); ?
????????} ?
????} ?
} ?
?
一般情況下 我們調(diào)節(jié)全局字體大小會(huì)在app的設(shè)置菜單里,這里我們模擬大,中,小 三種字體分別為 1,2,3,很明顯我們是以setTheme的方式來(lái)掌控全局字體大小,這時(shí)候 重點(diǎn)來(lái)了,如何set過(guò)主題,字體大小就會(huì)發(fā)生改變呢,我們來(lái)看xml布局文件,
[java] view plain copy
????android:layout_width="match_parent" ?
????android:layout_height="match_parent" ?
????android:orientation="vertical" > ?
????
????????android:layout_height="wrap_content" ?
????????android:text="@string/hello_world" ?
????????android:textSize="?textsize" /> ?
????
????????android:layout_height="wrap_content" ?
????????android:text="@string/hello_world" ?
????????android:textSize="?textsize2" /> ?
????
????????android:layout_height="wrap_content" ?
????????android:text="@string/hello_world" ?
????????android:textSize="?textsize3" /> ?
?
?
上面有3個(gè)textview,這里在textSize 屬性設(shè)置的是 ?textsize ,這是什么意思呢,這里表示引用attr文件里面的屬性,attrs 包含內(nèi)容如下,
?
[java] view plain copy
?
????
????
????
?
寫到這里很多人已經(jīng)恍然大悟了,原來(lái)是這樣,同時(shí) 因?yàn)槭窃趕et不同的主題,所以我們需要在style文件里申明,
[java] view plain copy
?
???? ?
???? ?
???? ?
?
dimen里面就是我們常規(guī)設(shè)置的字體大小,
[java] view plain copy
?
????
????
????
??????
????
????
??????
??????
????
????
??
?
當(dāng)做完上述這一切的時(shí)候,我們只需要更改BaseActivity里面的states變量,就可以看出不同的字體大小效果,哇哦,搞定!
評(píng)論