Android 8.0 (API düzeyi 26) ve sonraki sürümlerde bir TextView
öğesine, metin boyutunun, düzenini TextView
özelliklerine ve sınırlarına göre otomatik olarak doldurması için genişletip küçülmesi talimatını verebilirsiniz. Bu ayar, dinamik içeriğe sahip farklı ekranlarda metin boyutunu optimize etmeyi kolaylaştırır.
Destek Kitaplığı 26.0, Android 8.0 (API düzeyi 26) veya önceki sürümleri çalıştıran cihazlarda otomatik boyutlandırma TextView
özelliğini tam olarak destekler.
android.support.v4.widget
paketi, özelliklere geriye dönük uyumlu şekilde erişmek için TextViewCompat
sınıfını içerir.
TextView'u otomatik olarak boyutlandırma
TextView
otomatik boyutlandırmasını programatik olarak veya XML halinde ayarlamak için çerçeveyi ya da Destek Kitaplığı'nı kullanabilirsiniz. XML özelliklerini ayarlamak için Android Studio'daki Özellikler penceresini de kullanabilirsiniz.
TextView
için otomatik boyutlandırmayı üç şekilde ayarlayabilirsiniz. Bu ayarlar, aşağıdaki bölümlerde açıklanmıştır:
Not: Bir XML dosyasında otomatik boyutlandırmayı ayarlarsanız TextView
öğesinin layout_width
veya layout_height
özellikleri için "wrap_content" değerini kullanmanız önerilmez. Aksi takdirde beklenmedik sonuçlarla karşılaşabilirsiniz.
Varsayılan
Varsayılan ayar, TextView
öğesinin otomatik olarak ölçeklendirilmesinin yatay ve dikey eksenlerde eşit şekilde ölçeklendirilmesini sağlar.
- Varsayılan ayarı programatik olarak tanımlamak için
setAutoSizeTextTypeWithDefaults(int autoSizeTextType)
yöntemini çağırın. Otomatik boyutlandırma özelliğini devre dışı bırakmak içinAUTO_SIZE_TEXT_TYPE_NONE
değerini veya yatay ve dikey eksenleri eşit şekilde ölçeklendirmek içinAUTO_SIZE_TEXT_TYPE_UNIFORM
değerini sağlayın. - XML'de varsayılan ayarı tanımlamak için
android
ad alanını kullanın veautoSizeTextType
özelliğini none veya uniform olarak ayarlayın.
Not: Tek tip ölçeklendirme için varsayılan boyutlar minTextSize = 12sp
, maxTextSize = 112sp
ve granularity = 1px.
'dir.
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" />
Destek Kitaplığı'nı kullanarak varsayılan ayarı tanımlama
- Varsayılan ayarı Destek Kitaplığı aracılığıyla programatik olarak tanımlamak için
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)
yöntemini çağırın.TextView
widget'ının bir örneğini veTextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE
veyaTextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM
gibi metin türlerinden birini sağlayın. - XML'de Destek Kitaplığı aracılığıyla varsayılan ayarı tanımlamak için
app
ad alanını kullanın veautoSizeTextType
özelliğini none veya uniform olarak ayarlayın.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform" /> </LinearLayout>
Ayrıntı düzeyi
Minimum ve maksimum metin boyutları aralığı ve her adımın boyutunu belirten bir boyut tanımlayabilirsiniz. TextView
, minimum ve maksimum boyut özellikleri arasındaki bir aralıkta eşit şekilde ölçeklenir. Her artış, ayrıntı düzeyi özelliğinde ayarlanan adım boyutu olarak gerçekleşir.
- Programatik olarak bir metin boyutu aralığı ve boyutu tanımlamak için
setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
yöntemini çağırın. Maksimum değer, minimum değer, ayrıntı değeri ve herhangi birTypedValue
boyut birimini sağlayın. - XML'de bir metin boyutu aralığı ve boyut tanımlamak için
android
ad alanını kullanın ve aşağıdaki özellikleri ayarlayın:autoSizeTextType
özelliğini none veya uniform olarak ayarlayın. none (hiçbiri) değeri varsayılan değerdir ve uniform (tek tip),TextView
özelliğinin yatay ve dikey eksenlerde eşit şekilde ölçeklenmesini sağlar.TextView
için otomatik boyutlandırma boyutlarını tanımlamak üzereautoSizeMinTextSize
,autoSizeMaxTextSize
veautoSizeStepGranularity
özelliklerini ayarlayın.
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" android:autoSizeMinTextSize="12sp" android:autoSizeMaxTextSize="100sp" android:autoSizeStepGranularity="2sp" />
Destek Kitaplığı'nı kullanarak ayrıntı düzeyini tanımlama
- Destek Kitaplığı üzerinden programatik olarak bir metin boyutu aralığı ve boyut tanımlamak için
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
yöntemini çağırın. Maksimum değeri, minimum değeri, ayrıntı değerini ve herhangi birTypedValue
boyut birimini sağlayın. - Destek Kitaplığı aracılığıyla XML'de bir dizi metin boyutu ve boyut tanımlamak için
app
ad alanını kullanın ve düzen XML dosyasındaautoSizeText
,autoSizeMinTextSize
,autoSizeMaxTextSize
veautoSizeStepGranularity
özelliklerini ayarlayın.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform" app:autoSizeMinTextSize="12sp" app:autoSizeMaxTextSize="100sp" app:autoSizeStepGranularity="2sp" /> </LinearLayout>
Hazır ayar boyutları
Hazır ayar boyutları, metni otomatikleştirirken TextView
öğesinin seçtiği değerleri belirtmenize olanak tanır.
-
TextView
öğesini programatik olarak otomatik boyutlandırmayı ayarlamak üzere hazır ayar boyutlarını kullanmak içinsetAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit)
yöntemini çağırın. Boyut için bir boyut dizisi ve herhangi birTypedValue
boyut birimi sağlayın. -
XML'de
TextView
öğesi için otomatik boyutlandırmayı ayarlamak üzere hazır ayar boyutlarını kullanmak içinandroid
ad alanını kullanın ve aşağıdaki özellikleri ayarlayın:autoSizeTextType
özelliğini none veya uniform olarak ayarlayın. none (hiçbiri) değeri varsayılan değerdir ve uniform (tek tip),TextView
özelliğinin yatay ve dikey eksenlerde eşit şekilde ölçeklenmesini sağlar.autoSizePresetSizes
özelliğini önceden ayarlanmış bir boyut dizisine ayarlayın. Diziye kaynak olarak erişmek için diziyires/values/arrays.xml
dosyasında tanımlayın.
<resources> <array name="autosize_text_sizes"> <item>10sp</item> <item>12sp</item> <item>20sp</item> <item>40sp</item> <item>100sp</item> </array> </resources>
<?xml version="1.0" encoding="utf-8"?> <TextView android:layout_width="match_parent" android:layout_height="200dp" android:autoSizeTextType="uniform" android:autoSizePresetSizes="@array/autosize_text_sizes" />
Destek Kitaplığı'nı kullanarak hazır ayar boyutları ayarlama
- Destek Kitaplığı üzerinden programatik olarak
TextView
otomatik boyutlandırmasını ayarlamak üzere hazır ayar boyutlarını kullanmak içinTextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit)
yöntemini çağırın. Boyut içinTextView
sınıfının bir örneğini, boyut dizisini ve herhangi birTypedValue
boyut birimini sağlayın. - Destek Kitaplığı aracılığıyla XML'de
TextView
için otomatik boyutlandırmayı ayarlamak üzere hazır ayar boyutlarını kullanmak içinapp
ad alanını kullanın ve düzen XML dosyasındaautoSizeTextType
veautoSizePresetSizes
özelliklerini ayarlayın.
<resources> <array name="autosize_text_sizes"> <item>10sp</item> <item>12sp</item> <item>20sp</item> <item>40sp</item> <item>100sp</item> </array> </resources>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="200dp" app:autoSizeTextType="uniform" app:autoSizePresetSizes="@array/autosize_text_sizes" /> </LinearLayout>
Ek kaynaklar
Dinamik içerikle çalışırken bir TextView
öğesini otomatik boyutlandırma hakkında daha fazla bilgi için Android Jetpack: TextView'u Otomatik Boyutlandırma videosunu izleyin.