অ্যান্ড্রয়েড এবং & nbsp; টেক্সটভিউতে


108

এটি  কি টেক্সটভিউতে যুক্ত করা সম্ভব ? কেউ কি একই ধরনের কার্যকারিতা অর্জন করেছেন?

আমি টেক্সটভিউতে ব্রেক-অযোগ্য স্থান পেতে চাই।

উত্তর:


184

TextViewইউনিকোড নো-ব্রেক ব্রেক স্পেস ক্যারেক্টার ( \u00A0) কে সম্মান করে , যা HTML এর চেয়ে সহজ / হালকা সমাধান হবে।


3
এটি দুর্দান্ত কাজ করে। আপনি এটি এক্সএমএল বা জাভা কোডে যুক্ত করতে পারেন। জাভা কোডে সূক্ষ্মভাবে কাজ করুন, এক্সএমএলে আমি খুব বেশি পরীক্ষা করে দেখিনি, তবে এটি কাজটি করা উচিত।
মিকুওস

\ U0020 বা \ u00A0 কাজও নয়। সেগুলি এক্সএমএলে সেট করেও নয় (এক্সএমএলে প্রাকদর্শনেও নয়) বা সেট টেক্সট () দিয়ে জাভাতে সেট করে। অ্যান্ড্রয়েড 4.1 এবং 4.2 দিয়ে উভয়ই চেষ্টা করেছেন
স্টিফান উইসনার

1
যে কমা সঙ্গে একযোগে কাজ করে না। আপনি যেমন ক্ষেত্রে কমা পরে ঠিক একটি লাইন বিরতি পেতে
অ্যালেক্স বনেল

1
00 u00A0 আমার জন্য কৌশলটি করে না। এটি কোনও স্থান তৈরি করে না, কেবল শব্দগুলিতে যোগ দেয় - অ্যান্ড্রয়েড 4.৪.৪, ৫.০, ৫.১
মার্সেল ব্র

1
কোটলিনে, এটি খুব ভালভাবে কাজ করে। আমি এটি দিয়ে সমস্ত খালি জায়গাগুলি প্রতিস্থাপন করব এবং এটি শেষ অক্ষরগুলি থেকে উপবৃত্তাকার হবে। str.replace ("", "00 u00A0") ফলন হয়েছে, "হ্যালো ..." এর পরিবর্তে "হ্যালো ওয়ার ..."
ইউন

24

\u00A0একটি অ-ব্রেকিং স্পেস, \u0020একটি নন-ব্রেকিং স্পেস নয়


24

 পঠনযোগ্য সমাধান পেতে এটি ব্যবহার করা সম্ভব । পাঠ্য অন্তর্ভুক্ত \u00A0বা /  অথবা সত্যই সত্যিকারের উত্স কোডের পাঠকের কাছে (বা সেই বিষয়ে অনুবাদক) খুব বেশি তথ্য সরবরাহ করে না, যদি না আপনি হেক্স কোডগুলি মনে রাখেন। এতে নামযুক্ত সত্তাটি ব্যবহার করার একটি উপায় এখানে রয়েছে :  strings.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE resources [
    <!ENTITY nbsp "&#160;"><!-- non-breaking space, U+00A0 -->
]>
<resources>
    ...
</resources>

এটি নিখোঁজ ঘোষণা তৈরি করবে। মূল এইচটিএমএল ঘোষণাটি https://www.w3.org/TR/xhtml1/DTD/xhtML-lat1.ent এ পাওয়া যায় যা সাধারণ এক্সএইচটিএমএল ডিটিডি থেকে রেফারেন্স করা হয় । এই সমস্ত কাজ করে, কারণ এক্সএমএল পার্সার ফাইলটি লোড করার সময় এগুলি এবং বিকল্পগুলি পড়েন, ফলে ফলাফলটি সংকলিত সংস্থানগুলিতে সত্তা উপস্থিত হবে না।

&nbsp;অ্যান্ড্রয়েড পাঠ্যে ( CharSequence) সংস্থানসমূহ

<!-- Defined in <resources> -->
<string name="html_text">Don\'t break <b>this&nbsp;name</b></string>

<!-- Used in a layout -->
<TextView
    android:layout_width="130dp"
    android:layout_height="wrap_content"
    android:background="#10000000"
    android:text="@string/html_text"
    />

ডিভাইস এবং পূর্বরূপ (পূর্বরূপ এইচটিএমএল স্বীকৃতি দেয় না)
ডিভাইসে এইচটিএমএল পূর্বরূপে এইচটিএমএল

&nbsp; অ্যান্ড্রয়েড স্ট্রিং (ফর্ম্যাট) রিসোর্সগুলিতে

<!-- Defined in <resources> -->
<string name="formatted_text">%1$s is&nbsp;nice</string>

<!-- Used in a layout -->
<TextView
    android:layout_width="130dp"
    android:layout_height="wrap_content"
    android:background="#10000000"
    tools:text="@string/formatted_text"
    />

তারপরে কোডে:

String contents = getString(R.string.formatted_text, "Using an &nbsp;");
((TextView)view.findViewById(android.R.id.text1)).setText(contents);

ডিভাইস এবং পূর্বরূপ (পূর্বরূপ সত্ত্বাকে স্বীকৃতি দেয় না এবং জাভা স্ট্রিংগুলি আক্ষরিক পাঠ্য!)
ডিভাইসে ফর্ম্যাট করা পূর্বরূপে ফর্ম্যাট করা

আরও কৌশল

এগুলি ডিটিডি সত্তাগুলির উদাহরণ উদাহরণ, এটি নিজের পছন্দ অনুসারে ব্যবহার করুন।

<!ENTITY con "\&apos;"><!-- contraction, otherwise error: "Apostrophe not preceded by \"
                            Sadly &apos; cannot be overridden due to XML spec:
                            https://www.w3.org/TR/xml/#sec-predefined-ent -->
<!ENTITY param1 "&#37;1$s"><!-- format string argument #1 -->

<string name="original">Don\'t wrap %1$s</string>
<string name="with_entities">Don&con;t wrap &param1;</string>

উভয়ই হাইলাইট করতে সহায়তা করে: এক্সএমএল সত্ত্বা হাইলাইট করা


অ্যান্ড্রয়েড চরিত্রটি ঠিকঠাকভাবে পরিচালনা করে , অ্যাডাস্ট্রোফ সত্তা তৈরি করার প্রয়োজন নেই। <string name="original">Don’t wrap %1$s</string>প্রত্যাশিত হিসাবে কাজ করে।
দিতি

1
@ দিতি এটি কোনও অ্যাপ্রোসফাই নয় , এটি একটি নিখুঁত একক কোটেশন মার্ক ; 'ভিএস তুলনা করুন । অ্যান্ড্রয়েডের আরও অভিনব ইউনিকোড চরিত্রগুলির সাথে কোনও সমস্যা নেই, তবে এটির ASCII 0x27 এর সাথে সমস্যা আছে, যার পালানোর প্রয়োজন। সত্তাটি কেবল একটি সুবিধা, আমি যেখানে এটি কার্যকর হতে পারে তা প্রদর্শনের জন্য এটি সেখানে রেখেছি।
TWiStErRob

এটি দুর্দান্ত =) আপনাকে ধন্যবাদ। আমি এই অনেক ক্লিনার এবং পড়া সহজ।
অ্যালেক্স হার্ট

দুর্দান্ত উত্তর, আপনাকে ধন্যবাদ! আমি সম্মত হই যে &nbsp;স্ট্রিংগুলিতে থাকা ইউনিকোডের চেয়ে অনুবাদকদের পক্ষে আরও অর্থবহ\u00A0
মার্ক অ্যাটিনাসি

1
@ তবুও, শেষ বিভাগটি দেখুন (আরও কৌশলগুলি) যা যুক্ত করে conএবং param1একই ফাইলটিতে।
TWiStErRob

18

টেক্সটভিউয়ের অবিচ্ছিন্ন স্থানটিকে সম্মান করা উচিত

<string name="test">Hello&#160;world</string>

অথবা

new TextView("Hello\u00A0world");

3

একটি অনন্য পরিস্থিতি যার মধ্যে আমি দৌড়েছি তা হ'ল স্ট্রিং রিসোর্সে একটি অবিচ্ছেদী স্থান যুক্ত করা যা String.formatপরামিতিগুলি নিয়েছিল ।

<resources>
    <string name="answer_progress" formatted="false">Answered %d of %d</string>
</resources>

আমি স্ট্রিংয়ের মধ্যে অবিচ্ছেদী স্থানের অক্ষরটি অনুলিপি করে অনুলিপি করার চেষ্টা করেছি এবং সংকলনের পরে এটি নিয়মিত পুরানো স্থানের সাথে প্রতিস্থাপিত হয়েছিল।

সরানো হচ্ছে ফরম্যাট = "FALSE" , বিন্যাস args সংখ্যায়ন এবং ব্যবহার ব্যাকস্ল্যাশ স্বরলিপি আমার জন্য কাজ:

<resources>
    <string name="answer_progress">Answered %1$d\u00A0of\u00A0%2$d</string>
</resources>

2

এটি আমার পক্ষে কাজ করেছে:

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
    textview.setText(Html.fromHtml(your string, Html.FROM_HTML_MODE_LEGACY));
} else {
    textview.setText(Html.fromHtml(your string);
}

1

এটি একটি উদাহরণ যা টেক্সটভিউতে এনএসপি ব্যবহার করে

<string name="text">Example:\u00A0</string>


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