آموزش Spinner متریال دیزاین راست چین (RTL) در اندروید
سالم دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش Spinner متریال دیزاین راست چین (RTL) در اندروید می پردازیم همانطور که می دانید spinner قابلیت فارسی سازی یا همان rtl را پشتیبانی نمی کند اگر هم بخواهید آن را فارسی سازی کنید باید layout سفارشی و همین طور یک آداپتور سفارشی برای آن ایجاد کنید که کاری بسیار سختی نیست ولی کمی زمان بر است امروز به معرفی Spinner فارسی که توسط یکی از ایرانیان ایجاد شده خواهیم پرداخت در ادامه می توانید پیش نمایشی از آن را مشاهده کنید با ما همراه باشید.
برای استفاده از این کتاب خانه مثل همیشه ابتدا باید آن ار طریق Gradle به پروژه اضافه کنید.
ابتدای کار وارد فایل Build.gradle از نوع Top Level شده سپس در بخش repositories خط زیر را اضافه کنید.
1 2 3 | repositories { maven { url "https://jitpack.io" } } |
پروژه را sync نکیند وارد فایل Build.gradle از نوع Module شده سپس در بخش dependencies خط زیر را اضافه کنید.
1 2 3 | dependencies { compile 'com.github.hamsaadev:RTLMaterialSpinner:V1.0.1' } |
هم اکنون پروژه را sync کنید. علت خطاهای گریدل را قبلا بررسی کردیم در سایت وازه Gradle را جستجو کنید.
البته اگر به خطایی خاصی خوردید یعنی ف*ی**ل*تر ش**ک*ن روشن بود و به خطا خوردید بخش dependencies مثل زیر کنید.
1 2 3 | compile ('com.github.hamsaadev:RTLMaterialSpinner:V1.0.1'){ exclude group: 'com.android.support', module: 'appcompat-v7' } |
برای استفاده از آن مثل زیر عمل کنید.
ابتدا در layout خود کد زیر را قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | <ir.hamsaa.RtlMaterialSpinner android:id="@+id/spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" app:ms_hint="hint" app:ms_enableFloatingLabel="false" app:ms_enableErrorLabel="false" app:ms_floatingLabelText="floating label" app:ms_baseColor="@color/base" app:ms_highlightColor="@color/highlight" app:ms_errorColor="@color/error" app:ms_typeface="typeface.ttf" app:ms_thickness="2dp" app:ms_hintColor="@color/hint" app:ms_arrowColor="@color/arrow" app:ms_arrowSize="16dp" app:ms_isRtl="true" app:ms_floatingLabelColor="@color/floating_label"/> |
app:ms_hint : یه پیام کم رنگ بالای spinner نمایش داده می شود.
app:ms_enableFloatingLabel : فعال یا غیر فعال سازی FloatingLable .
app:ms_enableErrorLabel : فعال یا غیرفعال کردن پیام خطا.
app:ms_floatingLabelText : متن پیام FloatingLable.
app:ms_baseColor : رنگ کلی Spinner را تعیین می کند.
app:ms_highlightColor : رنگ های Highlight را تنظیم می کند تست کنید متوجه می شوید.
app:ms_errorColor : رنگ پیام خطا را تنظیم می کند.
app:ms_typeface : فونت سفارشی رو می تونید لود کنید.
app:ms_thickness اندازه فاصله بین dialog که به شکل لیست و خود spinner را تنظیم می کند.
app:ms_hintColor : رنگ hint را تنظیم می کند.
app:ms_arrowColor : رنگ آن شکل سمت راست یا همان arrow را تنظیم می کند.
app:ms_arrowSize : اندازه arrow یا همان فلش رو تنظیم می کند.
app:ms_floatingLabelColor : رنگ Floating Label را تنظیم می کند.
و نحوه استفاده از آن هم همانند spinner معمولی است مثل زیر عمل کنید.
1 2 3 4 5 | String[] ITEMS = {"Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, ITEMS); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); RtlMaterialSpinner spinner = (RtlMaterialSpinner) findViewById(R.id.spinner); spinner.setAdapter(adapter); |
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
سلام ممنون از اموزش خوبتون..
اگه میشه گرفتن مقادیر spiner را با کتاب خانه ی والی و از سرور رو اموزش بدین خوب میشه
قرار خواهیم داد.
سلام،
این attribute های مربوط به رنگ و فونت برای من خطا میده، آیا خود ماژول فایل color رو نداره؟ خود ماژول رو که ادد کردم و فایل هاشون رو چک کردم ندیدم.
بدون Attr ها spinner معمولی هست حتی راست به چپ هم نیست.
ممنون میشم راهنماییم کنید.
سلام ,
باید هم خطا بدهد شما هیچکدام از آنها تعریف نشده است شما باید خودتان رنگ و تعریف کنید (برای تعریف رنگ باید وارد پوشه res/values شده و رنگ ها را در فایل colors.xml تعریف کنید !)
بعد از اینکه ادد کردید تست کنید یک ویژگی جدید به کد اضافه کردم مشکل حل می شود.
موفق باشید.
ممنون از پاسخ تون،
به دو شیوه هم تو خود spinner مستقیم رنگ هارو مقدار دادم هم یه بار تو color تعریف کردم اما همچنان ارور میداد، حالا یه بار دیگه باز امتحان میکنم، ویژگی جدید رو هم اضافه میکنم ببینم چی میشه …..
سلام خواهش می کنم , ویژگی جدید که اضافه شده رو اضافه کنید مشکلتان حل می شود.
ممنون از شما،
لطفا ویژگی که اضافه کردید رو تو کد مربوطه ببینید (app:ms_isRtl=”true”)
ممنون از اطلاع fix شد
من هنوز هم نمیتونم بدون پاک کردن ویژگی typeface برنامه رو ران کنم … لطفا راهنمایی کنید. ارور پیدا نکردن فونت ttf رو میده بهم.
هر کاری میکنم syns نمیشه
قند ش*ک*ن روشن هست ولی دانلود نمیشه
روش دوم هم کلا همه کتابخانهــها به هم میخوره
ف.ی.ل شکن هم زدیم فایده نداشت.
سینک نمی کنه.
خطا به شرح زیر است:
Unable to resolve dependency for ‘:app@release/compileClasspath’: Could not resolve com.github.hamsaadev:RTLMaterialSpinner:V1.0.1.
Could not resolve com.github.hamsaadev:RTLMaterialSpinner:V1.0.1.
Required by:
project :app
> Could not resolve com.github.hamsaadev:RTLMaterialSpinner:V1.0.1.
> Could not parse POM https://dl.google.com/dl/android/maven2/com/github/hamsaadev/RTLMaterialSpinner/V1.0.1/RTLMaterialSpinner-V1.0.1.pom
> Already seen doctype.
سلام و درود مشکل شما از Gradle است در بخش Top Level حتما Classpath درستی استفاده نکردید اگر به شکل زیر است
آن را به شکل زیر تغییر دهید
اگر sdk قدیمی دارید بفرمایید راهنمایتون کنم.
موفق باشید.