আমি আমার প্রশ্নটি গুগল করেছি তবে কার্যকরী উত্তর নেই। আমার পাঠ্যদর্শনটিতে কীভাবে বুলেটযুক্ত তালিকা যুক্ত করা যায়।
আমি আমার প্রশ্নটি গুগল করেছি তবে কার্যকরী উত্তর নেই। আমার পাঠ্যদর্শনটিতে কীভাবে বুলেটযুক্ত তালিকা যুক্ত করা যায়।
উত্তর:
উল / লি / অল হিসাবে সমর্থন করা শক্ত নয় not ভাগ্যক্রমে আপনি সিনট্যাকটিক চিনি হিসাবে এটি ব্যবহার করতে পারেন:
• foo<br/>
• bar<br/>
• baz<br/>
•
আরও বেশি পছন্দগুলি এখানে রয়েছে তালিকার বুলেটটির জন্য এইচটিএমএল সত্তা http://
মার্ক মারফি (@ কমন্সওয়্যার) দ্বারা সরবরাহিত কোন ট্যাগগুলি সম্পর্কে আরও http://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html এইচটিএমএল.ফর্মএইচটিএমএল দিয়ে লোড করুন
((TextView)findViewById(R.id.my_text_view)).setText(Html.fromHtml(myHtmlString));
<string name="string_name"><![CDATA[ • foo<br /> • bar... ]]></string>
ব্রাউপটি এইচটিএমএল-এর মাধ্যমে সুন্দরভাবে ব্যাখ্যা করা হয়েছে। এইচটিএমএল সত্তা সহ প্রদত্ত সমাধান কার্যকর হতে পারে। তবে এটিতে কেবল বুলেট রয়েছে। যদি আপনার পাঠ্য মোড়ানো হয় তবে ইনডেন্টটি সঠিক হবে না।
আমি একটি ওয়েব ভিউ এম্বেড করে অন্যান্য সমাধান পেয়েছি। এটি সম্ভবত কারও পক্ষে উপযুক্ত, তবে আমি মনে করি এটির ধরণের ওভারকিল ... (একটি তালিকা ভিউ ব্যবহার করে একই))
আমি নেলসনের সৃজনশীল পদ্ধতির পছন্দ করি : ডি, তবে এটি আপনাকে পাঠ্য দৃশ্যে একটি নিরবচ্ছিন্ন তালিকা যুক্ত করার সম্ভাবনা দেয় না।
বুলেটস্প্যান ব্যবহার করে বুলেটের সাথে একটি আনর্ডার্ড করা তালিকার আমার উদাহরণ
CharSequence t1 = getText(R.string.xxx1);
SpannableString s1 = new SpannableString(t1);
s1.setSpan(new BulletSpan(15), 0, t1.length(), 0);
CharSequence t2 = getText(R.string.xxx2);
SpannableString s2 = new SpannableString(t2);
s2.setSpan(new BulletSpan(15), 0, t2.length(), 0);
textView.setText(TextUtils.concat(s1, s2));
ইতিবাচক:
নেতিবাচক:
আমি একটি বিকল্প খুঁজে পেয়েছি .. কেবল এই বুলেটটি "•" (এটি একটি পাঠ্য) অনুলিপি করুন এবং আপনার পাঠ্য দৃশ্যের লেখায় পেস্ট করুন, আপনি পাঠ্য রঙটি পরিবর্তন করে এবং আকার, উচ্চতার প্রস্থের মতো অন্যান্য সমস্ত বৈশিষ্ট্যগুলি বদলে বুলেটটির রঙ পরিবর্তন করতে পারেন। .. :)
আপনি টাইপ করার সময় এই বুলেটটি পেতে শর্টকাট ব্যবহার করতে পারেন
উইন্ডোজ জন্য
ALT + 7
ম্যাকের জন্য
ALT + 8
এখানে বিভিন্ন উত্তরের দ্বারা অনুপ্রাণিত হয়ে আমি এটিকে একটি সহজ লাইনার তৈরি করার জন্য একটি ইউটিলিটি ক্লাস তৈরি করেছি । এটি মোড়ানো পাঠ্যের জন্য ইন্ডেন্টেশন সহ একটি বুলেটযুক্ত তালিকা তৈরি করবে। এটিতে স্ট্রিং, স্ট্রিং রিসোর্স এবং স্ট্রিং অ্যারের সংস্থানগুলি একত্রিত করার জন্য পদ্ধতি রয়েছে।
এটি একটি CharSequence তৈরি করবে যা আপনি কোনও পাঠ্য ভিউতে যেতে পারেন। উদাহরণ স্বরূপ:
CharSequence bulletedList = BulletListUtil.makeBulletList("First line", "Second line", "Really long third line that will wrap and indent properly.");
textView.setText(bulletedList);
আশা করি এটি সহায়ক। উপভোগ করুন
দ্রষ্টব্য: এটি সিস্টেমের স্ট্যান্ডার্ড বুলেটটি ব্যবহার করবে, পাঠ্যের মতো একই রঙের একটি ছোট বৃত্ত। যদি আপনি একটি কাস্টম বুলেট চান তবে বুলেটস্প্যানকে সাবক্লাসিং করে বিবেচনা করুন এবং drawLeadingMargin()
আপনার যে বুলেটটি চান তা আঁকতে এটি ওভাররাইড করা উচিত। এটি কীভাবে কাজ করে তার ধারণার জন্য বুলেটস্প্যান উত্সটি একবার দেখুন ।
public class BulletTextUtil {
/**
* Returns a CharSequence containing a bulleted and properly indented list.
*
* @param leadingMargin In pixels, the space between the left edge of the bullet and the left edge of the text.
* @param context
* @param stringArrayResId A resource id pointing to a string array. Each string will be a separate line/bullet-point.
* @return
*/
public static CharSequence makeBulletListFromStringArrayResource(int leadingMargin, Context context, int stringArrayResId) {
return makeBulletList(leadingMargin, context.getResources().getStringArray(stringArrayResId));
}
/**
* Returns a CharSequence containing a bulleted and properly indented list.
*
* @param leadingMargin In pixels, the space between the left edge of the bullet and the left edge of the text.
* @param context
* @param linesResIds An array of string resource ids. Each string will be a separate line/bullet-point.
* @return
*/
public static CharSequence makeBulletListFromStringResources(int leadingMargin, Context context, int... linesResIds) {
int len = linesResIds.length;
CharSequence[] cslines = new CharSequence[len];
for (int i = 0; i < len; i++) {
cslines[i] = context.getString(linesResIds[i]);
}
return makeBulletList(leadingMargin, cslines);
}
/**
* Returns a CharSequence containing a bulleted and properly indented list.
*
* @param leadingMargin In pixels, the space between the left edge of the bullet and the left edge of the text.
* @param lines An array of CharSequences. Each CharSequences will be a separate line/bullet-point.
* @return
*/
public static CharSequence makeBulletList(int leadingMargin, CharSequence... lines) {
SpannableStringBuilder sb = new SpannableStringBuilder();
for (int i = 0; i < lines.length; i++) {
CharSequence line = lines[i] + (i < lines.length-1 ? "\n" : "");
Spannable spannable = new SpannableString(line);
spannable.setSpan(new BulletSpan(leadingMargin), 0, spannable.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
sb.append(spannable);
}
return sb;
}
}
এটি এখন পর্যন্ত সবচেয়ে সহজ ..
<string name="bullet_ed_list">\n\u2022 He has been Chairman of CFL Manufacturers Committee of ELCOMA, the All India Association of Lighting Equipment Manufacturers.
\n\u2022 He has been the President of Federation of Industries of India (FII).</string>
ব্যবহারের জন্য প্রস্তুত কোটলিন এক্সটেনশন
fun List<String>.toBulletedList(): CharSequence {
return SpannableString(this.joinToString("\n")).apply {
this@toBulletedList.foldIndexed(0) { index, acc, span ->
val end = acc + span.length + if (index != this@toBulletedList.size - 1) 1 else 0
this.setSpan(BulletSpan(16), acc, end, 0)
end
}
}
}
ব্যবহার:
val bulletedList = listOf("One", "Two", "Three").toBulletedList()
label.text = bulletedList
রঙ এবং আকার:
বুলেট রঙ বা আকার পরিবর্তন করতে বুলেটস্প্যানের পরিবর্তে কাস্টমবুলিটস্প্যান ব্যবহার করুন
package com.fbs.archBase.ui.spans
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.text.Layout
import android.text.Spanned
import android.text.style.LeadingMarginSpan
import androidx.annotation.ColorInt
class CustomBulletSpan(
private val bulletRadius: Int = STANDARD_BULLET_RADIUS,
private val gapWidth: Int = STANDARD_GAP_WIDTH,
@ColorInt private val circleColor: Int = STANDARD_COLOR
) : LeadingMarginSpan {
private companion object {
val STANDARD_BULLET_RADIUS = Screen.dp(2)
val STANDARD_GAP_WIDTH = Screen.dp(8)
const val STANDARD_COLOR = Color.BLACK
}
private val circlePaint = Paint().apply {
color = circleColor
style = Paint.Style.FILL
isAntiAlias = true
}
override fun getLeadingMargin(first: Boolean): Int {
return 2 * bulletRadius + gapWidth
}
override fun drawLeadingMargin(
canvas: Canvas, paint: Paint, x: Int, dir: Int,
top: Int, baseline: Int, bottom: Int,
text: CharSequence, start: Int, end: Int,
first: Boolean,
layout: Layout?
) {
if ((text as Spanned).getSpanStart(this) == start) {
val yPosition = (top + bottom) / 2f
val xPosition = (x + dir * bulletRadius).toFloat()
canvas.drawCircle(xPosition, yPosition, bulletRadius.toFloat(), circlePaint)
}
}
}
আমি যে বিকল্পটি ব্যবহার করেছি তা হ'ল একটি স্টাইল ব্যবহার করে বুলেটটি আঁকতে সক্ষম সেট করা।
<style name="Text.Bullet">
<item name="android:background">@drawable/bullet</item>
<item name="android:paddingLeft">10dp</item>
</style>
ব্যবহার:
<TextView android:id="@+id/tx_hdr"
android:text="Item 1" style="@style/Text.Bullet" />
android:drawableLeft=
একটি যৌগিক অঙ্কনযোগ্য সঙ্গে সাধারণ টেক্সটভিউ ব্যবহার করুন। উদাহরণ স্বরূপ
<TextView
android:text="Sample text"
android:drawableLeft="@drawable/bulletimage" >
</TextView>
এখানে অন্য একটি সমাধান রয়েছে, একটি পাঠ্যদর্শনটিতে হুবহু একটি তালিকা যুক্ত করা না, তবে আমার ধারণা লক্ষ্যটি একই is এটি টেবিললআউট ব্যবহার করছে, এর জন্য কেবলমাত্র এক্সএমএল প্রয়োজন এবং এটি ছোট অর্ডারযুক্ত বা আনর্ডারড তালিকার জন্য সত্যিই সহজ। নীচে, আমি এর জন্য নমুনা কোড ব্যবহার করেছি, জাভাতে কোডের একটি লাইন নয়।
ইতিবাচক:
নেতিবাচক:
প্রতিটি তালিকা আইটেম একটি পৃথক স্ট্রিং উত্স হিসাবে সঞ্চয় করা হয়
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
style="@style/helpPagePointsStyle"
android:layout_weight="0.2"
android:text="1." />
<TextView
style="@style/helpPagePointsStyle"
android:layout_weight="3"
android:text="@string/help_points1" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
style="@style/helpPagePointsStyle"
android:layout_weight="0.2"
android:text="2." />
<TextView
style="@style/helpPagePointsStyle"
android:layout_weight="3"
android:text="@string/help_points2" />
</TableRow>
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<TextView
style="@style/helpPagePointsStyle"
android:layout_weight="0.2"
android:text="3." />
<TextView
style="@style/helpPagePointsStyle"
android:layout_weight="3"
android:text="@string/help_points3" />
</TableRow>
</TableLayout>
এবং শৈলী:
<style name="helpPagePointsStyle">
<item name="android:layout_width">0dp</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:gravity">left</item>
</style>
এখানে একটি শিরোনাম এবং প্রতিটি আইটেমের সামনে একটি ট্যাব সহ বুলেটযুক্ত তালিকা রয়েছে।
public class BulletListBuilder {
private static final String SPACE = " ";
private static final String BULLET_SYMBOL = "•";
private static final String EOL = System.getProperty("line.separator");
private static final String TAB = "\t";
private BulletListBuilder() {
}
public static String getBulletList(String header, String []items) {
StringBuilder listBuilder = new StringBuilder();
if (header != null && !header.isEmpty()) {
listBuilder.append(header + EOL + EOL);
}
if (items != null && items.length != 0) {
for (String item : items) {
Spanned formattedItem = Html.fromHtml(BULLET_SYMBOL + SPACE + item);
listBuilder.append(TAB + formattedItem + EOL);
}
}
return listBuilder.toString();
}
}
পুরোপুরি ওভারকিল নিয়ে গিয়ে একটি কাস্টম পাঠ্য দর্শন তৈরি করেছেন।
এটি এর মতো ব্যবহার করুন:
<com.blundell.BulletTextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="--bullet 1 --bullet two --bullet three --bullet four" />
এবং কোড:
package com.blundell;
import android.content.Context;
import android.text.Html;
import android.util.AttributeSet;
import android.widget.TextView;
public class BulletTextView extends TextView {
private static final String SPLITTER_CHAR = "--";
private static final String NEWLINE_CHAR = "<br/>";
private static final String HTML_BULLETPOINT = "•";
public BulletTextView(Context context, AttributeSet attrs) {
this(context, attrs, android.R.attr.textViewStyle);
}
public BulletTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
checkForBulletPointSplitter();
}
private void checkForBulletPointSplitter() {
String text = (String) getText();
if (text.contains(SPLITTER_CHAR)) {
injectBulletPoints(text);
}
}
private void injectBulletPoints(String text) {
String newLinedText = addNewLinesBetweenBullets(text);
String htmlBulletText = addBulletPoints(newLinedText);
setText(Html.fromHtml(htmlBulletText));
}
private String addNewLinesBetweenBullets(String text) {
String newLinedText = text.replace(SPLITTER_CHAR, NEWLINE_CHAR + SPLITTER_CHAR);
newLinedText = newLinedText.replaceFirst(NEWLINE_CHAR, "");
return newLinedText;
}
private String addBulletPoints(String newLinedText) {
return newLinedText.replace(SPLITTER_CHAR, HTML_BULLETPOINT);
}
}
•
আপনাকে fsymbols.com/signs/bullet-Point
আমি এটি সবচেয়ে সহজ উপায় বলে মনে করি, টেক্সটভিউটি যেমন এক্সএমএল ফাইলে রয়েছে তেমন ছেড়ে যান এবং নীচের জাভা কোডটি ব্যবহার করুন। এটা আমার জন্য পুরোপুরি ভাল কাজ করে।
private static final String BULLET_SYMBOL = "•";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tutorial);
TextView tv = (TextView) findViewById(R.id.yourTextView);
tv.setText("To perform this exercise you will need the following: "
+ System.getProperty("line.separator")//this takes you to the next Line
+ System.getProperty("line.separator")
+ Html.fromHtml(BULLET_SYMBOL + " Bed")
+ System.getProperty("line.separator")
+ Html.fromHtml(BULLET_SYMBOL + " Pillow"));
}
বুলেটযুক্ত তালিকাটি স্ট্রিং রিসোর্সে ট্যাগ <ul>
এবং <li>
ট্যাগ ব্যবহার করে তৈরি করা যেতে পারে ।
কোডটিতে স্ট্রিং সেট করতে সেটটেক্সট (Html.fromHtml (স্ট্রিং)) ব্যবহার করবেন না ! এক্সএমএল বা সেটটেক্সট ( স্ট্রিং ) ব্যবহার করে স্ট্রিংটি কেবলমাত্র সেট করুন ।
যেমন:
স্ট্রিং.এক্সএমএল ফাইল
<string name="str1">
<ul>
<li><i>first</i> item</li>
<li>item 2</li>
</ul>
</string>
লেআউট.এক্সএমএল ফাইল
<TextView
android:text="@string/str1"
/>
এটি নিম্নলিখিত ফলাফল উত্পাদন করবে:
নিম্নলিখিত ট্যাগগুলি যেমন সমর্থিত হয় (স্ট্রিং রিসোর্সে সরাসরি এম্বেড করা হয়):
<ul>
\n<ul><li>a</li> \n<li>b</li> \n<li>c</li></ul>
single line text
আপনি সহজভাবে অঙ্কনযোগ্য ব্যবহার করতে পারেন জন্য :
<TextView
android:id="@+id/txtData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/draw_bullet_list"
android:drawablePadding="@dimen/padding_8dp"
android:text="Hello"
android:textColor="@color/colorBlack" />
অঙ্কন_বালেট_লিস্ট.এক্সএমএল :
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/colorAccent" />
<size
android:width="12dp"
android:height="12dp" />
</shape>
আপনি পরিবর্তন করতে পারেন shape
, size
, color
আপনার প্রয়োজন উপর ভিত্তি করে।
বুলেটযুক্ত তালিকা করার জন্য আপনার কাছে দুটি বিকল্প রয়েছে
বিকল্প 1 সহজতম।
আপনি সম্পাদনা পাঠ্য কাঠামো সহ বুলেট তালিকা তৈরি করতে চান।
এই তথ্যসূত্রগুলি আমি উপকৃত করেছি
আপনি এই বুলেট ব্যবহার করতে পারেন
EditText edtNoteContent = findViewById(R.id.editText_description_note);
edtNoteContent.addTextChangedListener(new TextWatcher(){
@Override
public void afterTextChanged(Editable e) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter)
{
if (lengthAfter > lengthBefore) {
if (text.toString().length() == 1) {
text = "◎ " + text;
edtNoteContent.setText(text);
edtNoteContent.setSelection(edtNoteContent.getText().length());
}
if (text.toString().endsWith("\n")) {
text = text.toString().replace("\n", "\n◎ ");
text = text.toString().replace("◎ ◎", "◎");
edtNoteContent.setText(text);
edtNoteContent.setSelection(edtNoteContent.getText().length());
}
}
}
});