दिलचस्प पोस्ट
डॉकर में "एक्सपोज़" और "प्रकाशित" के बीच का अंतर Php का उपयोग करने की अनुमति के बिना एक "facebook_pages" के बिना एक फेसबुक पेज पर पोस्ट करें क्लास विधि "TypeError" उत्पन्न करती है … … कुंजीशब्द तर्क के लिए कई मान … " तेजी से आईपी पता कैसे प्राप्त करें I क्या सिस्टम के लिए एक टास्क आधारित प्रतिस्थापन है। थ्रेडिंग। टिमर? अंतिम कुंजीप्रेस के बाद 2 सेकंड के बाद Jquery Run कोड कॉलम के सबसेट पर पंक्ति साधनों की गणना करें सीएसएस लोड हो रहा है के बाद ट्रिगर जो jQuery घटना? मैं jsfiddle.net से अपनी वेबसाइट पर कैसे कोड डाल सकता हूं? कार्यक्रम में मूल्य परिवर्तन के साथ कार्ट में उत्पाद जोड़ें जी ++ में प्रोफ़ाइल निर्देशित अनुकूलन का उपयोग कैसे करें? क्यों नल "वस्तु" प्रकार है? तयशुदा आदेश का डिफ़ॉल्ट मान, नेस्टेड मैं वर्तमान उपयोगकर्ता के "एप्लिकेशन डेटा" फ़ोल्डर का पथ कैसे प्राप्त करूं? Ggplot में भूखंड क्षेत्रों को संरेखित करें

एंड्रॉइड SpannableString पाठ के पीछे पृष्ठभूमि की स्थापना

मैं इस छवि पर जैसा कुछ जैसा दिखाना चाहूंगा: यहां छवि विवरण दर्ज करें

मैं नारंगी गोल आयत को छोड़कर, स्पैननीय स्ट्रिंगबिइल्डर के साथ ईर्ष्याकरण करने में कामयाब रहा मैं BackgroundColorSpan के साथ उस रंग की पृष्ठभूमि को सेट कर सकता हूं, लेकिन मुझे इसे गोल बनाने का कोई तरीका नहीं मिल सकता है। कोई भी विचार मैं इसे कैसे प्राप्त कर सकता हूं?

अग्रिम में धन्यवाद!

संपादित करें: मैं Xamarin का उपयोग कर रहा हूं। एंड्रॉइड, लेकिन यहां मेरा कोड है:

stringBuilder.SetSpan(new BackgroundColorSpan(Application.Context.Resources.GetColor(Resource.Color.orangeColor)), stringBuilder.Length() - length, stringBuilder.Length(), SpanTypes.ExclusiveExclusive); 

Solutions Collecting From Web of "एंड्रॉइड SpannableString पाठ के पीछे पृष्ठभूमि की स्थापना"

अगर किसी को रुजवेल्ट के कोड नमूने में कठिनाई हो रही है (मुझे यकीन है, हो सकता है क्योंकि यह एक्समारिन है। एंड्रॉइड?), यहां एक अधिक मूल एंड्रॉइड जावा संस्करण में एक अनुवाद है:

 public class RoundedBackgroundSpan extends ReplacementSpan { private static int CORNER_RADIUS = 8; private int backgroundColor = 0; private int textColor = 0; public RoundedBackgroundSpan(Context context) { super(); backgroundColor = context.getResources().getColor(R.color.gray); textColor = context.getResources().getColor(R.color.white); } @Override public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) { RectF rect = new RectF(x, top, x + measureText(paint, text, start, end), bottom); paint.setColor(backgroundColor); canvas.drawRoundRect(rect, CORNER_RADIUS, CORNER_RADIUS, paint); paint.setColor(textColor); canvas.drawText(text, start, end, x, y, paint); } @Override public int getSize(Paint paint, CharSequence text, int start, int end, Paint.FontMetricsInt fm) { return Math.round(paint.measureText(text, start, end)); } private float measureText(Paint paint, CharSequence text, int start, int end) { return paint.measureText(text, start, end); } } 

और उपयोग के लिए, निम्न कोड सेगमेंट को एक गतिविधि से लिया जाता है और मूल रूप से प्रत्येक टैग स्ट्रिंग के चारों ओर एक शानदार गोलाकार-कोने वाला पृष्ठभूमि रखता है, जिसमें प्रत्येक टैग के बीच में एक स्पाशिअल बफर होता है। ध्यान दें कि टिप्पणी की गई रेखा केवल एक पृष्ठभूमि रंग में डालती है, जो कि एक नज़र के रूप में अच्छा नहीं बनाती …

 SpannableStringBuilder stringBuilder = new SpannableStringBuilder(); String between = ""; for (String tag : eventListing.getTags()) { stringBuilder.append(between); if (between.length() == 0) between = " "; String thisTag = " "+tag+" "; stringBuilder.append(thisTag); stringBuilder.setSpan(new RoundedBackgroundSpan(this), stringBuilder.length() - thisTag.length(), stringBuilder.length() - thisTag.length() + thisTag.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //stringBuilder.setSpan(new BackgroundColorSpan(getResources().getColor(R.color.gray)), stringBuilder.length() - thisTag.length(), stringBuilder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } TextView tv = new TextView(this); tv.setText(stringBuilder); 

मैं अपनी समस्या को हल करने में कामयाब रहा, Pskink के सुझाव के आधार पर। यहां मेरा वर्ग है:

 public class RoundedBackgroundSpan : ReplacementSpan { public override void Draw(Canvas canvas, ICharSequence text, int start, int end, float x, int top, int y, int bottom, Paint paint) { var rect = new RectF(x, top, x + MeasureText(paint, text, start, end), bottom); paint.Color = Application.Context.Resources.GetColor(Resource.Color.nextTimeBackgroundColor); canvas.DrawRoundRect(rect, Application.Context.Resources.GetDimensionPixelSize(Resource.Dimension.localRouteDetailsRoundRectValue), Application.Context.Resources.GetDimensionPixelSize(Resource.Dimension.localRouteDetailsRoundRectValue), paint); paint.Color = Application.Context.Resources.GetColor(Resource.Color.nextTimeTextColor); canvas.DrawText(text, start, end, x, y, paint); } public override int GetSize(Paint paint, ICharSequence text, int start, int end, Paint.FontMetricsInt fm) { return Math.Round(MeasureText(paint, text, start, end)); } private float MeasureText(Paint paint, ICharSequence text, int start, int end) { return paint.MeasureText(text, start, end); } } 

उदाहरण उपयोग:

 var stringBuilder = new SpannableStringBuilder(); var stringToAppend = "hello world"; stringBuilder.Append(stringToAppend); stringBuilder.SetSpan(new RoundedBackgroundSpan(), stringBuilder.Length() - stringToAppend.Length, stringBuilder.Length(), SpanTypes.ExclusiveExclusive); 

सिर्फ एक शब्द: प्रतिस्थापन स्पेनी