2013-07-23 11 views
6
android

yılında Toast için arka plan, arka plan rengini ve metin rengini nasıl özelleştirileceği. Tostun arka planı için kırmızı renk ve tostun renk tonu için beyaz renk istiyorum ve bende tostun arka planını o kadar büyük tost olsun istiyorum. Uygulamamı çalıştırdığımda, benim tostumdan bir şey değişmez, hala varsayılan tostda gösterilir.varsayılan Tost değiştirerek özel bir düzen oluşturmadan Tostumu özelleştirmek isteyen

if (seriesSelection == null) { 
    Toast toast = Toast.makeText(getApplicationContext(), "tidak ada chart yang dipilih", Toast.LENGTH_SHORT); 
    toast.setGravity(Gravity.CENTER, 50, 50); 
    toast.getView().setPadding(10, 10, 10, 10); 
    toast.getView().setBackgroundColor(Color.RED); 
    TextView text = (TextView) toast.getView().findViewById(android.R.id.message); 
    text.setTextColor(Color.WHITE); 
    text.setTextSize(14); 
} else { 
    Toast toast= Toast.makeText(
      getApplicationContext(), 
      "Nilai " + listData.get(seriesSelection.getPointIndex()).getInuNilai()+ 
      " tanggal " + listData.get(seriesSelection.getPointIndex()).getTanggal(), 
      Toast.LENGTH_SHORT); 
    toast.setGravity(Gravity.CENTER, 50, 50); 
    toast.getView().setPadding(10, 10, 10, 10); 
    toast.getView().setBackgroundColor(Color.RED); 
    text.setTextColor(Color.WHITE); 
    text.setTextSize(14); 
    toast.show(); 
} 
+0

Benim için 'else' durumunda, uygulanmış dolgularla beyaz metinli kırmızı ekmek gösterilir. – sandrstar

cevap

9

Özel bir görünüm özel bir görünüm şişirmek ve toast.setView(layout) kullanmak olabilir.

Örnek:

LayoutInflater inflater = getLayoutInflater(); 
View layout = inflater.inflate(R.layout.custom_toast, 
           (ViewGroup) findViewById(R.id.toast_layout_root)); 

TextView text = (TextView) layout.findViewById(R.id.text); 
text.setText("This is a custom toast"); 

Toast toast = new Toast(getApplicationContext()); 
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
toast.setDuration(Toast.LENGTH_LONG); 
toast.setView(layout); 
toast.show(); 

Ve xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/toast_layout_root" 
       android:orientation="horizontal" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:padding="8dp" 
       android:background="#DAAA" 
       > 
    <ImageView android:src="@drawable/droid" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="8dp" 
       /> 
    <TextView android:id="@+id/text" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textColor="#FFF" 
       /> 
</LinearLayout> 

diğer bilgiler

http://developer.android.com/guide/topics/ui/notifiers/toasts.html

Ran @ senin ancak ve kod başka kısmı (ayrı) o tost gösterir kırmızı arka plan ve beyaz metin rengiyle. Ben bir sorun görmüyorum. Ancak, özelleştirmeniz gerekiyorsa, özel bir düzen kullanabilir ve düzeni şişirebilir ve görünümü toastta ayarlayabilirsiniz.

Düzenleme:

TextView'un

TextView text = (TextView) toast.getView().findViewById(android.R.id.message); 

parçası ve başka bölüm textview başlatılmış değilse de başlatılır.

başlatma TextView'un dışında if ve else kodu. buna göre bir Tost özelleştirmek için bulabilceğini

Kontrol Bu kütüphane denilen crouton yararlı

https://github.com/keyboardsurfer/Crouton

+0

Varsayılan Tostu değiştirerek özel bir düzen oluşturmadan tostumu özelleştirmek istiyorum. yapabilirmiyim? –

+1

@AoyamaNanami Yukarıdaki yazıyı kontrol edebilirsiniz. Ayrıca kod çalışır iyi kırmızı arka plan ve beyaz metin ile tost görebilirsiniz. SO tam olarak sorun nedir. Problemini yeniden oluşturamıyorum. Kodunuzu kopyalayarak aynı kodu kopyaladım. iyi çalışıyor. Özel düzeni kullan, size daha fazla özelleştirme seçeneği sunar. – Raghunandan

+0

çalıştığını .. teşekkür ederim :) –

2

Tost bir setView() yöntemi vardır:

Bu benim tost kişiselleştirilebilir.

herhangi görünümünü göstermek için bir tost özelleştirebilirsiniz.

Ben sadece bir görünümü oluşturmak ve kendiniz bunu pop yerine Toast içindeki görünümünü düzenlemek için çalışmakla söyleyebilirim.

+0

Özelleştirme yöntemini nasıl anlatabilir misiniz? –

0

ben de tost ve metin renginin arka planını değiştirebilir, çok basit ve kolay kodu var.

Toast toast = Toast.makeText(MainActivity.this, "Added successfully", Toast.LENGTH_LONG); 
    View view1 = toast.getView(); 
    toast.getView().setPadding(20, 20, 20, 20); 
    view1.setBackgroundResource(R.color.GREEN); 
    view1.setTextColor(Color.RED); 
    toast.show(); 
İlgili konular