Android 8.0 (API düzeyi 26) ve sonraki sürümlerde
Metin boyutunu ayarlamak için TextView
düzenine göre otomatik olarak genişletilir veya daraltılır.
TextView
özellikleri ve sınırları. Bu ayar, projenizin
Dinamik içerikle farklı ekranlarda metin boyutunu optimize etme.
Destek Kitaplığı 26.0, TextView
otomatik boyutlandırmasını tam olarak destekler
Bu özellik, Android 8.0 (API düzeyi 26) veya önceki sürümleri çalıştıran cihazlarda kullanılabilir.
android.support.v4.widget
paketi, TextViewCompat
değerini içeriyor
geri uyumlu bir şekilde erişmek için bir web sitesi oluşturabilirsiniz.
TextView otomatik boyutunu ayarlama
Otomatik olarak boyutlandırmayı ayarlamak için çerçeveyi veya Destek Kitaplığı'nı kullanabilirsiniz.
Programatik olarak veya XML olarak TextView
. Alıcı:
XML özelliklerini ayarlamak isterseniz Özellikler
penceresi açılır.
TextView
otomatik boyutlandırmasını üç şekilde ayarlayabilirsiniz:
aşağıdaki bölümlerde açıklanmıştır:
Not: Bir XML dosyasında otomatik boyutlandırmayı ayarlarsanız
"Wrap_content" değeri kullanılması önerilir. -
Birlayout_width
layout_height
TextView
. Bu da şunlara neden olabilir:
beklenmedik sonuçlar.
Varsayılan
Varsayılan ayar, TextView
ölçeğinin otomatik boyutlandırılmasına izin verir
eksende eşit olarak paylaştırılır.
- Varsayılan ayarı programatik olarak tanımlamak için
setAutoSizeTextTypeWithDefaults(int autoSizeTextType)
yöntemini çağırın. Devre dışı bırakmak içinAUTO_SIZE_TEXT_TYPE_NONE
ekleyin otomatik boyutlandırma özelliğini veyaAUTO_SIZE_TEXT_TYPE_UNIFORM
yatay ve dikey eksenleri eşit olarak ölçeklendirin. - XML'de varsayılan ayarı tanımlamak için
android
ad alanını kullanın. veautoSizeTextType
özelliğini none veya tek tip.
Not: Tek tip için varsayılan boyutlar
minTextSize = 12sp
,
maxTextSize = 112sp
ve granularity = 1px.
<?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ığı'ndan programatik olarak tanımlamak için
şunu ara:
TextViewCompat.setAutoSizeTextTypeWithDefaults(TextView textview, int autoSizeTextType)
yöntemidir.TextView
widget'ının bir örneğini ve metin türlerinden birini sağlayın:TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONE
veyaTextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM
. - XML'de varsayılan ayarı Destek Kitaplığı aracılığıyla tanımlamak için
app
ad alanını ayarlayın veautoSizeTextType
özelliğini none veya tek tip 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ı için bir aralık ve bir
boyutunu belirten bir dizi boyut seçin. İlgili içeriği oluşturmak için kullanılan
TextView
,
minimum ve maksimum boyut özelliklerini kullanabilirsiniz. Her artım, bir öğenin
boyut özelliğinde belirtilen boyut değerini girin.
- Programatik olarak bir metin boyutu aralığı ve boyut tanımlamak için
"the"
setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
. yöntemidir. Maksimum değeri, minimum değeri, ayrıntı düzeyini sağlayın değer ve herhangi birTypedValue
boyut birimi. - XML'de metin boyutu aralığı ve boyut tanımlamak için
android
ad alanı ve küme şu özelliklere sahiptir:- Ayarlayın:
autoSizeTextType
. özelliğini none veya uniform olarak ayarlayın. none değeri varsayılandır ve tek tipTextView
, yatay ve dikey yönde eşit olarak ölçeklenir. yardımcı olabilir. autoSizeMinTextSize
değerini ayarlayın,autoSizeMaxTextSize
, veautoSizeStepGranularity
otomatik olarak boyutlandırılacak boyutları tanımlamak içinTextView
- 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
- Programatik olarak aracılığıyla bir metin boyutu aralığı ve bir boyut tanımlamak için
destek kitaplığı,
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(int autoSizeMinTextSize, int autoSizeMaxTextSize, int autoSizeStepGranularity, int unit)
yöntemidir. Maksimum değeri, minimum değeri, ayrıntı değerini ve herhangi birTypedValue
boyut birimi. - Destek aracılığıyla XML'de bir metin boyutu aralığı ve boyut tanımlamak için
kullanıyorsanız
app
ad alanını kullanın veautoSizeText
autoSizeMinTextSize
,autoSizeMaxTextSize
veautoSizeStepGranularity
özellikleri.
<?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>
Ön ayar boyutları
Ön ayar boyutları,
TextView
, metni otomatik olarak boyutlandırırken seçer.
-
Otomatik boyutlandırmayı ayarlamak üzere önceden ayarlanmış boyutları kullanmak için
TextView
programatik olarak almak içinsetAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit)
yöntemidir. Boyut dizisi ve herhangi birTypedValue
boyut birimini seçin. -
Otomatik boyutlandırmayı ayarlamak üzere önceden ayarlanmış boyutları kullanmak için
XML'de
TextView
iseandroid
kullanın ad alanına girip şu özellikleri ayarlayın:autoSizeTextType
cihazını ayarlayın özelliğini none veya uniform olarak ayarlayın. none (hiçbiri) değeri varsayılandır ve tek tipTextView
, yatay ve dikey yönde eşit olarak ölçeklenir. yardımcı olabilir.- Ayarlayın:
autoSizePresetSizes
özelliğini bir önceden ayarlanmış boyut dizisiyle ilişkilendirebilirsiniz. Diziye kaynağı varsa diziyires/values/arrays.xml
dosyası olarak kaydedebilirsiniz.
<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 ayarlı boyutları ayarlama
- Otomatik boyutlandırmayı ayarlamak üzere önceden ayarlanmış boyutları kullanmak için
Programatik olarak
TextView
kullanıyorsanız,TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit)
yöntemidir.TextView
sınıfının bir örneğini sağlayın. ve boyut dizisi için herhangi birTypedValue
boyut birimini boyutunu değiştirmektir. - Otomatik boyutlandırmayı ayarlamak üzere önceden ayarlanmış boyutları kullanmak için
Destek Kitaplığı üzerinden XML olarak
TextView
oluşturmak içinapp
ad alanını belirtipautoSizeTextType
veautoSizePresetSizes
özellikleri.
<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 ile çalışırken TextView
öğesini otomatik boyutlandırma hakkında ek bilgi için
içerik, izle
Android Jetpack: TextView'u otomatik boyutlandırma.