بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

آموزش تراز بندی متن (Justify)

مدیریت گفتگو
مجتبی یگانه 12 سال پیش
آخرین تغییر: 11 سال پیش

خیلی ها میگن اندروید ترازبندی متن نداره  و من هم خیلی دنبالش نگشته بودم ، تا اینکه امروز بهش نیاز داشتم و دیدم آقای محسن نوابی عزیز یک کتابخانه کد باز برای این کار در اینجا قرار دادند- ازش استفاده کردم و مشکلی نداشت ، فونت رو هم کامل ساپورت میکنه پس دیگه دلیلی نمیمونه کل من آموزشش رو نزارم D: 

اکثر شما دوستان با استفاده از پروژه ها به صورت کتابخانه مشکل دارید پس مثل همیشه یک فایل jar با حجم 146 KB خروجی من شد !

خروجی :

نظرات

irwonders 12 سال پیش
خیلی ممنون مجتبی جان
احسان منصوری 12 سال پیش
چه برنامه هایی هم نوشته. واقعا جالب بودن. ایشون از کاربرای این سایتن؟
override 12 سال پیش
اینم یه معایبی داره البته من خودم هنوز امتحان نکردم رو نظر دوستان گرام لینک گفتم
iSheykhi 12 سال پیش
عمده ترین مشکلش در داینامیک نبودنشه.. در واقع بیشتر به درد نمایش متون ثابت میخوره تا متون داینامیک.
rayacoder 12 سال پیش
مشکل داره برادر من ! وقتی متن فارسی باشه و توش عدد و کلمه لاتین باشه به هم میریزه. البته وقتی که متن یا عدد در آخر خط قبل یا اول خط جدید باشه این مشکل وجود داره. این عکسی که شما گذاشتید متن لاتین جای بحرانی ای نیست ! البته توی بعضی گوشیها هم این کلاس کلا قاطی میکنه متن رو! بهش اطمینان کامل نمیشه کرد.
مجتبی یگانه 12 سال پیش
امین جان دقیقا یعنی چی ؟! ، من خودم تو 2 حالت استفاده کردم ، یکی اینکه از روی یک لایه نمونه بسازم Inflate کنم ، یکی هم زمان اجرا مشکلی ندیدم
مجتبی یگانه 12 سال پیش
@rarCoder - بیشتر برسی میکنم اما تا الان مشکلی ندیدم !
MeY3am 12 سال پیش
من اینو تو Github مطالعه کرده بودم کاربردیه ولی ممنون مجتبی جان
iSheykhi 12 سال پیش
یه تست ساده: با استفاده از یک SeekBar اندازه متن رو تغییر بده. متوجه میشه :-)
مجتبی یگانه 12 سال پیش
بدترین و فجیح ترین مشکلی که داره و تازه متوجه شدم ، Html.fromHtml رو ساپورت نمیکنه :((
Mir Unknown 12 سال پیش
این چرا امپورت نمیشه؟!
Spirit 12 سال پیش
add ability to dynamically change text size,color,lang and direction بروز شد :)
kmelodi 11 سال پیش
سلام: آقا نمیشه پروژه تون رو ایمپورت کرد دلیلشش چی میتونه باشه؟
احمد 11 سال پیش
اقا یه سوال : نمیشه یه متن بزرگ گذاشت تو یه تکست ویو برا نمایش؟ من مشکل فونت را حل کردم ولی اگه اینکارا بکنم تو گوشی گوچک بزرگ و تو تبلت خیلی کوچک میشه ایا راهی هست؟ممنون

پاسخ‌ها 2

مجتبی یگانه 12 سال پیش

چون ما خودمون نوشتن کاستوم کنترل رو بلدیم پس تا حدودی میفهمیم داستان چیه ! ، یک کاستوم کنترل extends شده از TextView هست و نحوه ی تعریف اش در xml لایه ی مورد نظرمون به این شکل هست :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ir.noghteh.JustifiedTextView
        xmlns:noghteh="http://noghteh.ir"
        android:id="@+id/txtText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:padding="25dp"
        noghteh:text="Text !"
        noghteh:textSize="20sp" >
    </ir.noghteh.JustifiedTextView>

</LinearLayout>

اما برای استفاده ازش باید این فایل Jar رو در مسیر res/libs قرار بدید :)

اگر در نمایش گرافیکی لایه مشکلی وجود داشت نگران نباشید ، Eclipse با کاستوم کنترل ها یکم مشکل داره ، اما خروجی نهایی بی نقص خواهد بود.

برای ایجاد کنترل در لحظه اجرا یا تغییر متن ، تغییر فونت و ... هیچ فرقی با TextView نداره ، فقط باید به این شکل Cast بشه 

JustifiedTextView txtJustified = (JustifiedTextView) TextViewLayout.findViewById(R.id.txtJustified );

فکر نکنم درگ کردن یک فایل سخت تلقی بشه ، پس کار سختی نیست :)

موفق باشید

نظرات

rayacoder 12 سال پیش

یکی از مشکلات جدید که برای این کتابخانه کشف کردم اینه که  وقتی متنی که با این روش ساخته شده مخفی باشه (به صورت GONE)  و بعد بخوایم اون رو INVISIBLE کنیم متن نمایش داده نمیشه. روشهایی رو تست کردم اما باز مشکل داشت.  البته باید گفت که تکست ویوهای عادی این مشکل رو ندارند. گفتم که بگم نگید بلد نیست D:

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .