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_widthlayout_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_NONEekleyin otomatik boyutlandırma özelliğini veyaAUTO_SIZE_TEXT_TYPE_UNIFORMyatay ve dikey eksenleri eşit olarak ölçeklendirin. - XML'de varsayılan ayarı tanımlamak için
androidad 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.TextViewwidget'ının bir örneğini ve metin türlerinden birini sağlayın:TextViewCompat.AUTO_SIZE_TEXT_TYPE_NONEveyaTextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM. - XML'de varsayılan ayarı Destek Kitaplığı aracılığıyla tanımlamak için
appad 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 birTypedValueboyut birimi. - XML'de metin boyutu aralığı ve boyut tanımlamak için
androidad 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. autoSizeMinTextSizedeğerini ayarlayın,autoSizeMaxTextSize, veautoSizeStepGranularityotomatik 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 birTypedValueboyut birimi. - Destek aracılığıyla XML'de bir metin boyutu aralığı ve boyut tanımlamak için
kullanıyorsanız
appad alanını kullanın veautoSizeTextautoSizeMinTextSize,autoSizeMaxTextSizeveautoSizeStepGranularityö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
TextViewprogramatik olarak almak içinsetAutoSizeTextTypeUniformWithPresetSizes(int[] presetSizes, int unit)yöntemidir. Boyut dizisi ve herhangi birTypedValueboyut birimini seçin. -
Otomatik boyutlandırmayı ayarlamak üzere önceden ayarlanmış boyutları kullanmak için
XML'de
TextViewiseandroidkullanın ad alanına girip şu özellikleri ayarlayın:autoSizeTextTypecihazı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.xmldosyası 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
TextViewkullanıyorsanız,TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(TextView textView, int[] presetSizes, int unit)yöntemidir.TextViewsınıfının bir örneğini sağlayın. ve boyut dizisi için herhangi birTypedValueboyut birimini boyutunu değiştirmektir. - Otomatik boyutlandırmayı ayarlamak üzere önceden ayarlanmış boyutları kullanmak için
Destek Kitaplığı üzerinden XML olarak
TextViewoluşturmak içinappad alanını belirtipautoSizeTextTypeveautoSizePresetSizesö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.