2013-04-16 3 views
2

Я хочу тост с несколькими цветами. Как это:Android Toast с несколькими цветами

Multi Color Toast

Я посмотрел на различные учебники по изменению макета в формате XML для создания пользовательского Тост, но ни один из них не объясняет, добавляя различные цвета, как это.

Как это сделать?

================================

ОТВЕТ

=== =======================================

Используя всю свою помощь, я разработал простой метод(), чтобы сделать цветные тосты проще позвонить.

Рез/макет/toast_layout.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:paddingLeft="12dp" 
    android:paddingRight="12dp" 
    android:paddingBottom="6dp" 
    android:paddingTop="6dp" 
    android:background="#DAAA" 
    > 
    <TextView android:id="@+id/text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     /> 
</LinearLayout> 

SRC/Projectname/FILENAME.java

// Color Toast(String1,String2,Color) 
// Toastbackground = White 
// String1 = Dark Gray 
// String2 - **CASE SENSITIVE** 
// = "same" = Dark Gray, or 
// = "purple" = Purple, or 
// = "orange" = Orange 

    public void CToast(String t1, String t2, String c) { 
     if (c == "same") { 
      c = "444444"; 
     } else if (c == "purple") { 
      c = "6600FF"; 
     } else if (c == "orange") { 
      c = "ffcc00"; 
     } 

     LayoutInflater inflater = getLayoutInflater(); 
     View layout = inflater.inflate(R.layout.toast_layout, 
       (ViewGroup) findViewById(R.id.toast_layout_root)); 
     TextView textCToast = (TextView) layout.findViewById(R.id.text); 

     String text2 = "<font color=#444444>" + t1 + "</font> <font color=#" + c + ">" + t2 + "</font"; 
     textCToast.setText(Html.fromHtml(text2)); 

     Toast toast = new Toast(this); 
     toast.setDuration(Toast.LENGTH_SHORT); 
     toast.setView(layout); 
     toast.show(); 
    } 

Надеюсь, что это поможет! Спасибо всем

ответ

6

В yo0ur пользовательский макет разместите textView. Там

String text = "This is <font color='red'>red</font>. This is <font color='blue'>blue</font>."; 
textView.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE); 

N.B .. пример взят из here

2

Я думаю, вы должны выпить с SpannableText - с помощью, которая позволяет применять цвета, стили и вставить смайлики и такие в строки.

Итак, это была бы моя первая идея попытаться как-то разобраться.

Я точно знаю, что это работает для рисования текста и многоцветных уведомлений. Или, может быть, вам просто нужно применить фильтр-фильтр. См here

3

Попробуйте сделать это я надеюсь, что это то, что вы realyy хотите

richTextView = (TextView)findViewById(R.id.rich_text); 

    // this is the text we'll be operating on 
    SpannableString text = new SpannableString("hello how are you"); 

    // make "hello" to (characters 0 to 5) red color 
    text.setSpan(new ForegroundColorSpan(Color.RED), 0, 5, 0); 

richTextView.setText(text, BufferType.SPANNABLE); 

И если вы хотите, чтобы показать, как тост попробовать это вместо SetText использовать его как этот

Toast.makeText(context, text, Toast.LENGTH_LONG).show(); 

enter image description here

+0

Это в значительной степени то, что я предложил, но с кодом copypastable :) +1 – Shark

Смежные вопросы