سؤال

أنا أرمي HTML إلى WebView لتقديمه. في HTML ، أحتاج إلى تحميل صورة لدي فيها /res/drawable.

أملك /res/drawable/my_image.png ورمز مثل هذا:

final WebView browser = (WebView) findViewById(R.id.my_webview);
String html = new MyHelper(myObject).getHtml();
browser.loadDataWithBaseURL("", html, "text/html", "UTF-8", "");

حيث السلسلة html لديه شيء مثل:

<html><head>
<h1>Here is the image</h1>
<img src="my_image.png" />
</head><html>

والسؤال هو ، ماذا يجب أن هذه الصورة src السمة تكون للإشارة إلى الصورة في /res/drawable?

هل كانت مفيدة؟

المحلول

هذا عمل في Android 2.2

<img src = "file:///android_res/drawable/q1.png" />

حيث Q1.PNG موجود في مجلد RES/Drawable-HDPI

نصائح أخرى

أعترف أنني لا أعرف الكثير عن WebViews / HTML ، لكن يبدو أنك تأخذ الطريق الأكثر تعقيدًا لهذا الغرض. هناك طريقة سهلة لتحميل ملف HTML ؛ ضعه في مجلد الأصول الخاص بك ، ثم يمكن الإشارة إليه على النحو التالي.

WebView webView = new WebView(this);
webView.loadUrl("file:///android_asset/index.html");
setContentView(webView);

من الواضح أن تخطيطك أكثر تعقيدًا لأن لديك أكثر من مجرد عرض ويب بحيث لا يمكنك استخدامه setContentView() مباشرة ، ولكن هذه هي الفكرة الأساسية. ثم للرجوع إلى صورة في ملف HTML هذا ، استخدمت أ <img> علامة مثل ذلك:

<img src="res/drawable/icon.png"/>

هل هذا مناسب لك؟

user302750 ،

طريقتك غير صحيحة. res/drawable/banner300.jpg يجب ان يكون file:///android_res/drawable/banner300.jpg.

banner300.jpg يمكن أن يكون في أحد المواقع التالية في مشروعك ، وسيقوم Android تلقائيًا بتحميل الجهاز الصحيح للجهاز الذي تستخدمه.

  • res/drawable/banner300.jpg
  • res/drawable-ldpi/banner300.jpg
  • res/drawable-mdpi/banner300.jpg
  • res/drawable-hdpi/banner300.jpg
  • res/drawable-xhdpi/banner300.jpg

ال assets المجلد مخصص للموارد العامة التي لا تحتاجها إلى إصدارات مختلفة من. قد يكون مثال على قالب XSL ، أو شيء من هذا القبيل.

Mikenereson ، ردك على مشكلتك غير صحيحة أيضًا ، وينبغي أن تكون الموارد القابلة للرسم في res الدليل.

إليك مثال من مشروعي الخاص. أخرج HTML ، تمامًا مثل هذا:

<img src="file:///android_res/drawable/stats_btn.png"/>

إذا كنت تستخدم ldpi الجهاز ، أحصل على ldpi الصورة ، إذا كنت تستخدم hdpi أو mdpi, ، أحصل على واحد مناسب لمن هم كذلك. Android يحل file:///android_res/drawable/stats_btn.png إلى أحد الموارد التالية التي لدي في مشروعي.

  • ./res/drawable-ldpi/stats_btn.png
  • ./res/drawable-hdpi/stats_btn.png
  • ./res/drawable-mdpi/stats_btn.png

من اختباراتي المسار ، "الملف: ///android_res/drawable/q1.png" يعمل فقط مع 2.2+. لـ 2.1 الذي يعطي ملفًا غير موجود. سيعمل نقل المورد إلى الأصول ، لكن هذا غير ممكن حقًا إذا كنت ترغب في الاستفادة من الميزات القابلة للسحب (مما يعني أنك تحتاج إلى نسخة من الصورة في كل مجلد ...).

الإجابات التي تنطوي على ملف: // urls قد لا تعمل بعد الآن من Android 4.0. انظر الإجابة على هذا السؤال. الطريقة التي ستعمل في الإجابة هنا.

لدي نفس المشكلة بالضبط ، ولكن لا وضع ملف الصورة في res/drawable (الذي كان عليّ أن أقوم بإنشائه أولاً ، كان لدي Hust Drawable -HDPI و -LDPI و -MDPI موجود بالفعل) أو باستخدام file:///asset/ url عملت بالنسبة لي.

هذا ما أفعله:

نشاط:

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        mWebView = (WebView) findViewById(R.id.webview);
        mWebView.getSettings().setJavaScriptEnabled(true);
        String summary = "<html><body><div style=\"background:red; width:300px; height:50px;\"></div><img src=\"res/drawable/banner300.jpg\"/></body></html>";
        mWebView.loadData(summary, "text/html", "utf-8");

ثم في res/drawable لقد وضعت banner300.jpg - لكنها لا تظهر. أيه أفكار؟

يمكنك تحميل الأقراص كما تفعل في أي مكان آخر في الكود الخاص بك ...http://developer.android.com/guide/topics/resources/drawable-resource.html

Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);

أيضًا mikenereson باستخدام Android ، يمكنك فقط الوصول مباشرة إلى الملفات الخام الموجودة في دليل الأصول و SDCard.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top