অ্যান্ড্রয়েডে Html.fromHtml () ব্যবহার করে পাঠ্যের রঙ হাইলাইট করা?


84

আমি একটি অ্যাপ্লিকেশন বিকাশ করছি যেখানে একটি অনুসন্ধান পর্দা থাকবে যেখানে ব্যবহারকারী নির্দিষ্ট কীওয়ার্ডগুলি অনুসন্ধান করতে পারে এবং সেই কীওয়ার্ডটি হাইলাইট করা উচিত। আমি Html.fromHtml পদ্ধতিটি পেয়েছি।

তবে এটি জানার জন্য এটির সঠিক পদ্ধতি কিনা তা আমি জানতে চাই।

এই সম্পর্কে আপনার মতামত আমাকে জানান।


একটি কাজের উদাহরণ জন্য দেখুন। javatechig.com/2013/04/07/how-to-display-html-in-android-view
নীলাঞ্চল

উত্তর:


198

অথবা Spannableম্যানুয়ালি এর সাথে ডিল করার চেয়ে অনেক সহজ , যেহেতু আপনি বলেননি যে আপনি পটভূমি হাইলাইট করতে চান, কেবল পাঠ্য:

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

8
এটি লক্ষণীয় যে Html.fromHtml স্প্যানিয়েবলস্ট্রিংয়ের চেয়ে ধীরে ধীরে, কারণ এতে পার্সিং রয়েছে। তবে একটি সংক্ষিপ্ত পাঠ্যের জন্য এটি কিছু যায় আসে না
মাইচা কে

লিঙ্কে অন্য সমাধান রয়েছে বলে মনে হচ্ছে । লেজেন্ডের উত্তর দেখুন।
কেনেথ ইভান্স

4
একটি মন্তব্য হিসাবে, আমি খুঁজে পেয়েছি যে আমার কাছে টেক্সটভিউ.বফারটাইপ পাস করার দরকার নেই SPANপ্রেসনবল এবং এটি এখনও কার্যকর। ধন্যবাদ!
জেমস

অ্যান্ড্রয়েডের জন্য দীর্ঘ পাঠ্য বিন্যাসের জন্য আপনি কি কোনও এইচটিএমএল সম্পাদক জানেন? উদাহরণস্বরূপ আমি এই সাইটটি ব্যবহার করার চেষ্টা করছি ( html.am/html-editors/html-text-editor.cfm ) তবে যদি আমি উত্সটি দেখতে চাই তবে এটি রঙটি ফিরে আসে <span style="color:#ff0000;">যাতে অ্যান্ড্রয়েড রঙ পরিবর্তন করতে পারে না।
মেহমেট

@ মেমমেট আপনি সম্ভবত <span> ট্যাগগুলিকে <ফন্ট> ট্যাগগুলিতে "রঙ" বৈশিষ্ট্যযুক্ত পরিবর্তন করতে সন্ধান এবং প্রতিস্থাপন করতে পারেন।
ক্রিস্টোফার অর

36

এক্সএমএল রিসোর্স থেকে রঙ মান ব্যবহার করে:

int labelColor = getResources().getColor(R.color.label_color);
String сolorString = String.format("%X", labelColor).substring(2); // !!strip alpha value!!

Html.fromHtml(String.format("<font color=\"#%s\">text</font>", сolorString), TextView.BufferType.SPANNABLE); 

সুন্দরভাবে সম্পন্ন. আপনার অ্যাপ্লিকেশন সংস্থান থেকে রঙ ব্যবহার করতে সক্ষম হতে দরকারী।
স্পিডিনোমডস

আমি দ্বিতীয় লাইনে চাপ দিতে চাই, যেখানে আপনি রঙের হেক্সটিকে সাবস্ট্রিং করছেন: আলফা মানটি রঙ সেটিংসকে অবৈধ করে তুলবে! ভুলে যাবেন না!
মার্কোলাভ

12

এটি একটি স্প্যানিয়েবল স্ট্রিং ব্যবহার করে অর্জন করা যেতে পারে। আপনাকে নিম্নলিখিতগুলি আমদানি করতে হবে

import android.text.SpannableString; 
import android.text.style.BackgroundColorSpan; 
import android.text.style.StyleSpan;

এবং তারপরে আপনি নীচের মতো কিছু ব্যবহার করে পাঠ্যের পটভূমি পরিবর্তন করতে পারেন:

TextView text = (TextView) findViewById(R.id.text_login);
text.setText("");
text.append("Add all your funky text in here");
Spannable sText = (Spannable) text.getText();
sText.setSpan(new BackgroundColorSpan(Color.RED), 1, 4, 0);

যেখানে এটি লাল রঙের সাথে পজ 1 - 4 এ অধ্যায়গুলিকে হাইলাইট করবে। আশাকরি এটা সাহায্য করবে!


5
 String name = modelOrderList.get(position).getName();   //get name from List
    String text = "<font color='#000000'>" + name + "</font>"; //set Black color of name
    /* check API version, according to version call method of Html class  */
    if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.N) {
        Log.d(TAG, "onBindViewHolder: if");
        holder.textViewName.setText(context.getString(R.string._5687982) + " ");
        holder.textViewName.append(Html.fromHtml(text));
    } else {
        Log.d(TAG, "onBindViewHolder: else");
        holder.textViewName.setText("123456" + " ");   //set text 
        holder.textViewName.append(Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY));   //append text into textView
    }

4
color.xml থেকে ফন্টের রঙ কীভাবে পাবেন?
নূর হোসেন

4

বিকল্প সমাধান: পরিবর্তে একটি ওয়েবভিউ ব্যবহার করা। এইচটিএমএল এর সাথে কাজ করা সহজ।

WebView webview = new WebView(this);

String summary = "<html><body>Sorry, <span style=\"background: red;\">Madonna</span> gave no results</body></html>";

webview.loadData(summary, "text/html", "utf-8");

2

হরফ পরিবর্তে ব্যবহারের স্প্যান হ্রাস করা হয় Html.fromHtml("<span style=color:red>"+content+"</span>")


1

আপনার পাঠ্যের অংশটিকে আন্ডারলাইন করা এবং রঙিন করতে

আপনার স্ট্রিং.এক্সএমএল এ

<string name="text_with_colored_underline">put the text here and &lt;u>&lt;font color="#your_hexa_color">the underlined colored part here&lt;font>&lt;u></string>

তারপরে ক্রিয়াকলাপে

yourTextView.setText(Html.fromHtml(getString(R.string.text_with_colored_underline)));

এবং ক্লিকযোগ্যযোগ্য লিঙ্কগুলির জন্য:

<string name="text_with_link"><![CDATA[<p>text before link<a href=\"http://www.google.com\">title of link</a>.<p>]]></string>

এবং আপনার ক্রিয়াকলাপে:

yourTextView.setText(Html.fromHtml(getString(R.string.text_with_link)));
yourTextView.setMovementMethod(LinkMovementMethod.getInstance());

0
textview.setText(Html.fromHtml("<font color='rgb'>"+text contain+"</font>"));

এটি এইচটিএমএল সম্পাদকটিতে যা করেছেন ঠিক তা রঙ দেবে, কেবল পাঠ্যদর্শনটি সেট করুন এবং পাঠ্যদর্শন মানের সাথে একত্রিত করুন। অ্যান্ড্রয়েড স্প্যান রঙ সমর্থন করে না, এডিটরটিতে এটি ফন্টের রঙে পরিবর্তন করুন এবং আপনি এখনই প্রস্তুত।


0

প্রথমে আপনার স্ট্রিংটি এইচটিএমএলে রূপান্তর করুন তারপরে এটিকে স্প্যানেবলে রূপান্তর করুন। নিম্নলিখিত কোডগুলি পরামর্শ হিসাবে করবেন।

 Spannable spannable = new SpannableString(Html.fromHtml(labelText));
                    
spannable.setSpan(new ForegroundColorSpan(Color.parseColor(color)), spannable.toString().indexOf("•"), spannable.toString().lastIndexOf("•") + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            

0

এর সাথে কোটলিন সংস্করণ যুক্ত করা হচ্ছে:

  • সংস্থান থেকে পাঠ্য প্রাপ্ত ( strings.xml)
  • সংস্থান থেকে রঙ প্রাপ্ত করা ( colors.xml)
  • "ফ্যাক্সিং এইচএক্স" এক্সটেনশন হিসাবে সরানো হয়েছে
fun getMulticolorSpanned(): Spanned {
    // Get text from resources
    val text: String = getString(R.string.your_text_from_resources)

    // Get color from resources and parse it to HEX (RGB) value
    val warningHexColor = getHexFromColors(R.color.your_error_color)

    // Use above string & color in HTML
    val html = "<string>$text<span style=\"color:#$warningHexColor;\">*</span></string>"

    // Parse HTML (base on API version)
    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY)
    } else {
        Html.fromHtml(html)
    }
}

এবং কোটলিন এক্সটেনশন (আলফা অপসারণ সহ):

fun Context.getHexFromColors(
    colorRes: Int
): String {
    val labelColor: Int = ContextCompat.getColor(this, colorRes)
    return String.format("%X", labelColor).substring(2)
}

ডেমো

ডেমো

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.