Diyelim ki TextViewuygulamamdaki tüm örneklerin sahip olmasını istiyorum textColor="#ffffff". Her biri için ayarlamak yerine bunu tek bir yerde ayarlamanın bir yolu var mı TextView?
Diyelim ki TextViewuygulamamdaki tüm örneklerin sahip olmasını istiyorum textColor="#ffffff". Her biri için ayarlamak yerine bunu tek bir yerde ayarlamanın bir yolu var mı TextView?
Yanıtlar:
Aslında, özel bir java sınıfı yapmanıza veya stili ayrı ayrı ayarlamanıza gerek kalmadan TextViews (ve diğer birçok yerleşik widget) için varsayılan bir stil ayarlayabilirsiniz.
themes.xmlAndroid kaynağına bakarsanız, çeşitli widget'lar için varsayılan stil için bir dizi özellik göreceksiniz. Anahtar, özel temanızda geçersiz kıldığınız textViewStyle(veya editTextStyle, vb.) Özniteliktir. Bunları aşağıdaki şekilde geçersiz kılabilirsiniz:
Oluşturun styles.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="android:Theme">
<item name="android:textViewStyle">@style/MyTextViewStyle</item>
</style>
<style name="MyTextViewStyle" parent="android:Widget.TextView">
<item name="android:textColor">#F00</item>
<item name="android:textStyle">bold</item>
</style>
</resources>
Ardından bu temayı uygulamanıza uygulayın AndroidManifest.xml:
<application […] android:theme="@style/MyTheme">…
Ve tüm metin görünümleriniz varsayılan olarak tanımlı stile MyTextViewStyle(bu örnekte kalın ve kırmızı) sahip olacaktır!
Bu, API seviye 4'ten itibaren cihazlarda test edildi ve harika çalışıyor gibi görünüyor.
<item name="android:textViewStyle">@style/MyTextViewStyle</item>ve ardından stili uygulamama uygularsam, tüm e- postalarım stile TextViewgöre gösterilecektir (işlem çubuğundaki uygulamanın adı bile). Eylem çubuğu ile sorunu nasıl çözebilirim? Varsayılan görünüme sahip olmasını istiyorum. Github
<item name="android:textViewStyle">@style/MyTextViewStyle</item>oraya da koyabilirsiniz , sadece ActionBar varsayılanına (veya benzer bir şeye) işaret edebilirsiniz
Bunu yapmanın iki yolu vardır:
Dizinde XML dosyaları oluşturarak kendi stillerinizi tanımlayabilirsiniz res/values. Öyleyse, kırmızı ve kalın bir metne sahip olmak istediğinizi varsayalım, sonra bu içerikle bir dosya oluşturursunuz:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyRedTheme" parent="android:Theme.Light">
<item name="android:textAppearance">@style/MyRedTextAppearance</item>
</style>
<style name="MyRedTextAppearance" parent="@android:style/TextAppearance">
<item name="android:textColor">#F00</item>
<item name="android:textStyle">bold</item>
</style>
</resources>
Örneğin, istediğiniz gibi adlandırabilirsiniz res/values/red.xml. Daha sonra yapmanız gereken tek şey, istediğiniz widget'larda bu görünümü kullanmaktır, örneğin:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
style="@style/MyRedTheme"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is red, isn't it?"
/>
</LinearLayout>
Daha fazla referans için şu makaleyi okuyabilirsiniz: Android Temalarını ve Stillerini Anlama
Bu, bunu başarmanın başka bir olası yoludur TextViewve metin rengini her zaman istediğiniz gibi ayarlayan kendinizinkini sağlamak olacaktır ; Örneğin:
import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.widget.TextView;
public class RedTextView extends TextView{
public RedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
setTextColor(Color.RED);
}
}
Ardından, TextViewXML dosyanızda bunu normal bir şekilde ele almanız gerekir :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<org.example.RedTextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is red, isn't it?"
/>
</LinearLayout>
Bir veya daha fazla seçeneği kullanmanız, ihtiyaçlarınıza bağlıdır. Yapmak istediğiniz tek şey görünümü değiştirmekse, o zaman en iyi yaklaşım ilk yaklaşımdır. Öte yandan, görünümü değiştirmek ve widget'larınıza bazı yeni işlevler eklemek istiyorsanız, ikincisi gitmenin yoludur.
custom_view_layout.xmlözel bir sınıfı şişirmek için kullanılan dosyada kullanamıyoruz ?
Varsayılan metin rengi için TextViewayarlanmış, android:textColorTertiaryistenen renge senin tema:
<item name="android:textColorTertiary">@color/your_text_color</item>
Diğer birçok Android denetiminin renkleri, çerçeve öznitelikleri kullanılarak denetlenebilir veya destek kitaplığı kullanıyorsanız kitaplık özniteliklerini destekleyebilir.
Ayarlayabileceğiniz öznitelikleri listesi için kontrol Android kaynak kodunu ait styles.xmlve themes.xmlya bu çok yararlı özü Dan Lew tarafından, her bir değeri değiştirmeyi deneyin ve ekranda değiştirmek istediğini anlıyorum.