tejariapp-new-logotejariapp-new-logotejariapp-new-logotejariapp-new-logo
  • صفحه اصلی
  • پروژه ها
    • پروژه طراحی سایت
    • پروژه های اندروید
    • پروژه های تحت ویندوز
    • UI & UX
    • ربات تلگرام
  • سفارش پروژه
    • انجام پروژه اندروید (Android)
    • طراحی و ساخت اپلیکیشن موبایل
    • انجام پروژه طراحی سایت با php
    • انجام پروژه طراحی سایت با Asp.net
    • انجام پروژه سی شارپ
    • فرم سفارش پروژه
  • مدرسه ی تجاری اپ
    • طراحی سایت
    • اندروید
    • سی شارپ
    • آموزش پایگاه داده
    • برنامه های کاربردی
  • لینک های مفید
    • پرداخت آنلاین
    • درباره تجاری اپ
    • تماس با ما
استخدام برنامه نویس متلب
سفارش پروژه
✕
            هیچ نتیجه ای یافت نشدمشاهده همه نتایج

            فاصله space بین کلمات در تکست ویو (TextView)

            • صفحه نخست
            • مدرسه ی تجاری اپ آموزش اندروید
            • فاصله space بین کلمات در تکست ویو (TextView)
            جستجو پیشرفته در ریسایکلر ویو با کاتلین
            جستجو پیشرفته در ریسایکلر ویو (RecyclerView)
            6 آبان 1397
            پخش ویدیو با videoView و MediaController کاتلین در اندروید
            پخش ویدیو با کلاس videoView و MediaController کاتلین در اندروید
            8 دی 1397
            منتشر شده توسط مهندس داودی
            تنظیم فاصله بین کلمات و حروف در تکست ویو با کاتلین

            تنظیم فاصله بین کلمات و حروف در تکست ویو با کاتلین

            سلام در این پست کلاس های سفارشی (Custom) برای تنظیم کردن فاصله بین حروف در تکست ویو و فاصله بین کلمات در تکست ویو  قرار دادم.که نکته جالب آنها این است که میشه از آن برای تمام نسخه های اندروید استفاده کرد.چون برخی اتریبیوت ها مثل android:letterSpacing هستند که برای نسخه های ۲۱ به بالا استفاده میشوند (پس عملا مارو محدود میکنن !)

            فاصله بین کلمات در تکست ویو

            کلاس فاصله بین حروف در تکست ویو

            (این کلاس برای تکست های فارسی چندان کارایی نداره و برای تکست های انگلیسی استفاده میشه)

             

            package dn.marjan.texteditmodules.span
            
            import android.content.Context
            import android.support.v7.widget.AppCompatTextView
            import android.text.Spannable
            import android.text.SpannableString
            import android.text.style.ScaleXSpan
            import android.util.AttributeSet
            import android.widget.TextView
            import dn.marjan.texteditmodules.R
            
            class LetterSpacingTextView(context: Context, attrs: AttributeSet) : AppCompatTextView(context, attrs) {
            
            var mLetterSpacing = LetterSpacing.BIGGEST
            set(value) {
            if (value != 0F)
            applyLetterSpacing(value)
            }
            
            private var mOriginalText: CharSequence? = ""
            
            init {
            mOriginalText = super.getText()
            val ta = context.obtainStyledAttributes(attrs, R.styleable.LetterSpacingTextView)
            this.mLetterSpacing = ta.getFloat(R.styleable.WordSpacingTextView_ws_space, LetterSpacing.BIGGEST)
            this.invalidate()
            }
            
            private fun applyLetterSpacing(span: Float) {
            if (this == null || this.mOriginalText == null) return
            val builder = StringBuilder()
            for (i in 0 until mOriginalText!!.length) {
            val c = "" + mOriginalText!![i]
            builder.append(c.toLowerCase())
            if (i + 1 < mOriginalText!!.length) { builder.append("\u00A0") } } val finalText = SpannableString(builder.toString()) if (builder.toString().length > 1) {
            var i = 1
            while (i < builder.toString().length) {
            finalText.setSpan(ScaleXSpan(span), i, i + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
            i += 2
            }
            }
            super.setText(finalText, TextView.BufferType.SPANNABLE)
            }
            
            object LetterSpacing {
            const val NORMAL = 0F
            const val NORMALBIG = 0.025F
            const val BIG = 0.05F
            val BIGGEST = 0.2F
            }
            }
            
            

            کلاس فاصله بین کلمات در تکست ویو

            package dn.marjan.texteditmodules.span
            
            import android.content.Context
            import android.support.v7.widget.AppCompatTextView
            import android.text.Spannable
            import android.text.SpannableString
            import android.text.style.ScaleXSpan
            import android.util.AttributeSet
            import android.widget.TextView
            import dn.marjan.texteditmodules.R
            
            class WordSpacingTextView(context: Context, val attrs: AttributeSet) : AppCompatTextView(context, attrs) {
            var mWordSpacing = WordSpacing.BIGGEST
            set(value) {
            applyWordSpacing(value)
            }
            
            private var mOriginalText: CharSequence = ""
            
            init {
            mOriginalText = super.getText()
            val ta = context.obtainStyledAttributes(attrs, R.styleable.WordSpacingTextView)
            this.mWordSpacing = ta.getFloat(R.styleable.WordSpacingTextView_ws_space, WordSpacing.BIGGEST)
            this.invalidate()
            }
            
            private fun applyWordSpacing(span: Float) {
            if (this == null || this.mOriginalText == null) return
            
            val finalText = SpannableString(mOriginalText)
            if (mOriginalText.length > 1) {
            
            var end = 0
            while (true) {
            end = mOriginalText.indexOf(' ', end + 1)
            
            if (end == -1)
            break
            
            finalText.setSpan(
            ScaleXSpan(span),
            end,
            end + 1,
            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE //for more info https://developer.android.com/reference/android/text/Spanned
            )
            }
            super.setText(finalText, TextView.BufferType.SPANNABLE)
            }
            
            }
            }
            
            object WordSpacing {
            const val NORMAL = 0f
            const val NORMALBIG = 0.025.toFloat()
            const val BIG = 0.05.toFloat()
            const val BIGGEST = 0.2.toFloat()
            }
            

            همچنین من اومدم برای راحتی کار یک اتریبیوت هم برای این کلاس ها تعریف کردم که برای تعریف اتریبیوت فقط کافیه درون فولدر values یک فایل xml با نام attrs بسازید و محتویات زیر را درونش قرار بدید

            <?xml version="1.0" encoding="utf-8"?>
            <resources>
            <!--set attr for declare space in xml file-->
            
            <declare-styleable name="LetterSpacingTextView">
            <attr name="ls_space" format="float"/>
            </declare-styleable>
            
            <declare-styleable name="WordSpacingTextView">
            <attr name="ws_space" format="float"/>
            </declare-styleable>
            </resources>
            
            
            اشتراک گذاری

            پست های مرتبط

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            30 بهمن 1400

            دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            30 بهمن 1400

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            توابع در زبان برنامه نویسی دارت (Dart)

            توابع در زبان برنامه نویسی دارت (Dart)

            27 بهمن 1400

            توابع در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب

            دیدگاهتان را بنویسید لغو پاسخ

            نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

            ساخت اپلیکیشن های موبایل

            • ساخت اپلیکیشن فروشگاهی
            • ساخت اپلیکشن ابزاری و خدماتی
            • ساخت اپلیکیشن آموزشی
            • و هزاران موضوع دیگر

             
            کلیک کنید

            آخرین دیدگاه ها

            • 6 فروردین 1401

              yasaman نظر در راست چین کردن متن در فیگما Figma

            • 3 فروردین 1401

              رضا نظر در مفاهیم Observable و Observer در RxJava

            • 5 اسفند 1400

              احمد نظر در پروژه وب سایت خبری با Asp.net MVC

            تجاری اپ در شبکه های اجتماعی

            لوگوی تایید پرداخت آنلاین

            2015-2022 © تمامي حقوق مادي و معنوي اين وب سايت نزد تجاری اپ محفوظ بوده و هر گونه کپي برداري از مطالب پيگرد قانوني به همراه دارد! | طراح سایت : ProgRun
            سفارش پروژه
                      هیچ نتیجه ای یافت نشدمشاهده همه نتایج