2014-12-20 4 views
0

Как загрузить внешнее изображение (от url) в тост? В настоящее время у меня есть этот код работать, который отображает простой текст:Как загрузить внешнее изображение в toroid?

cordova.getActivity().runOnUiThread(new Runnable() { 
    public void run() { 
     android.widget.Toast toast = android.widget.Toast.makeText(webView.getContext(), 'Hello, i'm a toast!', 0); 
     toast.setDuration(android.widget.Toast.LENGTH_LONG); 
     toast.show(); 
     callbackContext.success(); 
    } 
}); 

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

ответ

0

Просто создать пользовательский макет с ImageView и добавить его в свой обычай Тост:

Toast toast = new Toast(getApplicationContext()); 
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
toast.setDuration(Toast.LENGTH_SHORT); 
toast.setView(yourCustomView); // <- you custom View 
toast.show(); 

Посмотрите на это: Custom toast in android : a simple example

EDIT:

хорошо попробовать это (ПРЕДУПРЕЖДЕНИЕ уродливого псевдокода !!):

public void yourMethod(){ 
    new Thread(new Runnable(){ 
     public void run(){ 

      final Bitmap bmap = getBitmapFromURL("your URL");  

      runOnUiThread(new Runnable() { 
       public void run() { 
        ImageView img = new ImageView(); 
        img.setImageBitmap(bmap); 

        Toast toast = new Toast(getApplicationContext()); 
        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
        toast.setDuration(Toast.LENGTH_SHORT); 
        toast.setView(img); // <- you custom View 
        toast.show(); 
       } 
      }); 
     } 
    }).start(); 
} 


public Bitmap getBitmapFromURL(String link) { 

    try { 
     URL url = new URL(link); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.connect(); 
     InputStream input = connection.getInputStream(); 
     Bitmap bmap = BitmapFactory.decodeStream(input); 

     return bmap ; 

    } catch (IOException e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 
+0

Благодаря ДИТ , но я ноб с собственным кодом для Android и не знаю, как c обновить пользовательское представление с загрузчиком изображений, можете ли вы подробнее рассказать об этом? – FidoBoy

+0

да, но это не загружает изображение в тост – FidoBoy

+0

ОК я обновил свой ответ. я не мог попробовать, так что это просто псевдокод – dit

1

custom_toast.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/toast_layout" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#000" 
android:orientation="horizontal" 
android:padding="5dp" > 
<ImageView 
android:id="@+id/image" 
android:src="@drawable/toastimg" 
android:layout_width="wrap_content" 
android:layout_height="fill_parent" 
android:layout_marginRight="5dp" /> 
<TextView 
android:id="@+id/text" 
android:layout_width="wrap_content" 
android:layout_height="fill_parent" 
android:textColor="#FFF"/> 
</LinearLayout> 

Activity.java

LayoutInflater inflater = getLayoutInflater(); 
View layout = inflater.inflate(R.layout.custom_toast,(ViewGroup)findViewById(R.id.toast_layout)); 
TextView text = (TextView) layout.findViewById(R.id.text); 
ImageView imageView = (ImageView) layout.findViewById(R.id.image); 
Picasso.with(context) 
.load(url) 
.into(imageView); 
text.setText("Custom Toast with Twitter Icon"); //Message shown in Custom Toast 
Toast toast = new Toast(getApplicationContext()); 
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
toast.setView(layout); 
toast.show(); 
+0

Спасибо abdellah, но я не думаю, что могу создать custom_toast.xml в плагине cordova, также проблема в том, как загрузить изображение, это не локальный ресурс – FidoBoy

+0

Хорошо, я вижу, что вы добавили Picasso библиотеку для загрузки изображения, но это может быть немного сложным для этой простой задачи; нет более простого способа загрузки изображения без использования внешних библиотек, таких как Picasso? – FidoBoy

+0

Кроме того, если у вас есть опыт использования cordova, где я должен помещать файл custom_toast.xml в папку плагина? – FidoBoy