而不是使用此以下行的每個TextView中的:我可以在Android中使用XML的變量嗎?
android:textSize="40sp"
我是否能夠以變量來代替40SP?
作爲一個側面的問題,我被推薦使用SP單元,因爲它通過用戶定義的設置。這是最佳做法嗎?
而不是使用此以下行的每個TextView中的:我可以在Android中使用XML的變量嗎?
android:textSize="40sp"
我是否能夠以變量來代替40SP?
作爲一個側面的問題,我被推薦使用SP單元,因爲它通過用戶定義的設置。這是最佳做法嗎?
我能用一個變量替換40sp嗎?
您可以使用a dimension resource(例如,android:textSize="@dimen/someSize"
),或使用樣式做這個(每AlexN的答案),或通過setTextSize()
在運行時設置的大小。
我被推薦使用SP單元,因爲它通過用戶定義的設置。這是最佳做法嗎?
在較新版本的Android上,用戶可以通過設置應用程序更改基本字體大小。通過對單位使用sp
,您的字體大小將與基本字體大小一起縮放。如果您使用其他單位(例如,dp
),則無論用戶在「設置」中具有什麼內容,字體大小都將保持不變。我們無法說明sp
的使用是否是「最佳做法」 - 我相信有些情況下允許改變字體大小是件壞事。不過,默認情況下,sp
可能是正確的起點。
據我所知,使用SP對於文本大小來說是一個非常好的做法。 並根據你的第一個問題 - 我認爲我們不能使用變量,但是,有一個更好的方法。檢查出來 - http://developer.android.com/guide/topics/ui/themes.html
所以,如果你定義一個樣式,您可以在XML聲明你瀏覽像<TextView android:id = "@+id/myId" style = "@style/myStyle"/>
而這種風格將incapsulate要設置爲屏幕上的textViews所有參數。
不,不可能在XML文件中使用基於代碼的變量。不過,您可以使用這種樣式。
實施例:
<style name="MyTvStyle">
<item name="android:textSize">40sp</item>
</style>
然後應用這樣的:基於
<TextView style="@style/MyTvStyle" ... />
A碼的方法也是可能的。如果TextViews定義了android:id
屬性,則可以使用findViewById
方法在代碼中檢索它們。
例子:
int[] id_array = {
R.id.textview1, R.id.textview2, R.id.textview3 //Put all the id's of your textviews here
}
for(int i : id_array) { //Loop trough all the id's and retrieve the Textview associated with it.
TextView textview = (TextView)findViewById(i);
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP,40); //Set the text size to 40sp
}
是的,它總是更好地使用sp
,而不是正常的像素值。由於sp
會根據設備大小和用戶設置進行縮放。
謝謝。我甚至不知道風格。 – tomofv