Cara menyesuaikan latar belakang, warna latar belakang, dan warna teks untuk Toast di android

Saya ingin menyesuaikan Toast saya tanpa membuat tata letak khusus dengan memodifikasi Toast default. Saya ingin warna merah untuk latar belakang roti panggang, dan warna putih untuk warna teks roti panggang dan saya ingin membuat latar belakang roti panggang saya lebih besar dari roti panggang default. ketika saya menjalankan aplikasi saya, tidak ada perubahan dari toast saya, masih ditampilkan di toast default.

Inilah cara saya menyesuaikan roti panggang saya:

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();
}

person Aoyama Nanami    schedule 23.07.2013    source sumber
comment
Bagi saya, huruf 'lain' menunjukkan roti panggang merah dengan teks putih dengan bantalan yang diterapkan.   -  person sandrstar    schedule 23.07.2013


Jawaban (3)


Anda dapat membuat tampilan khusus memperluas tampilan khusus dan menggunakan toast.setView(layout).

Contoh:

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();

Dan xml Anda

<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>

Info lebih lanjut @

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

Jalankan bagian kode if dan else Anda (secara terpisah), ini menunjukkan roti panggang dengan latar belakang merah dan warna teks putih. Saya tidak melihat ada masalah. Namun jika Anda perlu menyesuaikan, Anda dapat menggunakan tata letak khusus dan memperluas tata letak serta mengatur tampilan untuk bersulang.

Sunting:

Tampilan teks Anda

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

diinisialisasi di bagian if dan di bagian lain tampilan teks tidak diinisialisasi.

Inisialisasi tampilan teks di luar kode if dan else.

Periksa perpustakaan ini bernama crouton yang mungkin berguna bagi Anda

https://github.com/keyboardsurfer/Crouton

person Raghunandan    schedule 23.07.2013
comment
Saya ingin menyesuaikan Toast saya tanpa membuat tata letak khusus dengan memodifikasi Toast default. Bisakah saya? - person Aoyama Nanami; 23.07.2013
comment
@AoyamaNanami Anda dapat memeriksa postingan di atas. juga kode Anda berfungsi dengan baik saya dapat melihat roti panggang dengan latar belakang merah dan teks putih. JADI apa masalah sebenarnya. saya tidak dapat mereproduksi masalah Anda. Saya menjalankan kode Anda dengan menyalin dan menempelkannya. itu berfungsi dengan baik. Menggunakan tata letak khusus akan memberi Anda lebih banyak opsi penyesuaian. - person Raghunandan; 23.07.2013

Toast memiliki metode setView() .

Anda dapat menyesuaikan Toast untuk menampilkan tampilan apa pun.

Menurut saya, alih-alih mencoba mengedit tampilan di dalam Toast, Anda cukup membuat Tampilan dan memasukkannya ke dalam diri Anda sendiri.

person Kevin    schedule 23.07.2013
comment
dapatkah Anda memberi tahu cara menyesuaikannya? - person Aoyama Nanami; 23.07.2013

Saya memiliki kode yang sangat sederhana dan mudah untuk menyesuaikan Toast, Anda juga dapat mengubah latar belakang toast dan warna teks.

 Toast toast = Toast.makeText(MainActivity.this, "Added successfully", Toast.LENGTH_LONG);
    View view = toast.getView();
    view.setPadding(20, 20, 20, 20);
    view.setBackgroundResource(R.color.GREEN);
    view.setTextColor(Color.RED);
    toast.show();
person Jatin Raghav    schedule 09.06.2017