تابستون داره تموم میشه ها، فرصت‌ها محدودن کلی آفر جذاب در کمپین تابستون🔥👇
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ Elham Shafiei
استفاده از رنگ‌ها به صورت ارایه
پوریا شفیعی حل شده توسط پوریا شفیعی

عرض سلام و خسته نباشید.

اگه بخوایم لیستی (ارایه ای) از رنگ‌ها را در xml تعریف کنیم و از کلاس جاوا به اون لیست دسترسی پیدا کنیم چیکار باید کرد؟

سلام وقت بخیر

داخل فایل colors.xml به صورت زیر آرایتون رو تعریف میکنید

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="colors">
        <item>#FFFF0000</item> //red
        <item>#FF00FF00</item> //green
        <item>#FF0000FF</item> //blue
    </string-array>
</resources>

داخل اکتویتی هم به صورت زیر میتونید به این آرایه دسترسی داشته باشید

TextView arrayColorTv = findViewById(R.id.tv_main_arrayColor);
        String[] colors = getResources().getStringArray(R.array.colors);
        arrayColorTv.setTextColor(Color.parseColor(colors[0])); //red
        arrayColorTv.setTextColor(Color.parseColor(colors[1])); //green
        arrayColorTv.setTextColor(Color.parseColor(colors[2])); //blue

فهم کد بسیار سادست ولی اگر جایی رو متوجه نشدین بگین که براتون توضیح بدم

 

 

میلاد عزیززاده ۲۷ تیر ۱۴۰۰، ۰۹:۲۴

سلام و احترام

 

ممنون از پاسخ میلاد عزیز 

همچنین شما میتوانید :

میتونید در مسیر res/values بیایید و یه فایل با نام مثلا array.xml بسازید سپس ابتدا رنگ هایی که میخواهید رو تعریف میکنید تا اون‌ها رو به ارایه ای از رنگ هاتون اضافه کنید یعنی چی؟

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="bright">#FF007F</color>
    <color name="red">#FF0000</color>
    <color name="orange">#FF7F00</color>
    <array name="rainbow">
        <item>@color/bright</item>
        <item>@color/red</item>
        <item>@color/orange</item>
    </array>
</resources>

بدین صورت که در کد بالا امدیم ابتدا رنگ هامون رو مشخص کردیم یعنی (bright,red,orange) و سپس اومدیم و ارایه ای ساختیم و نام اون رو برابر مثلا rainbow قرار دادیم و در این ارایه رنگ هایی که خواستیم به عنوان عضوی از این ارایه اضافه کردیم پس تا اینجا توانستیم ارایه ای از رنگ‌ها رو بسازیم.

حال برای گرفتن این ارایه در کد جاوا لازم هست ارایه ای بسازید و اون ارایه رو از R.array بخوانید :

(نکته : R به معنای Resources هست که میرود در res و جایی که فایل ما با نام array هست رو پیدا میکند چون گفتیم R.array)

int[] rainbow =getApplicationContext().getResources().getIntArray(R.array.rainbow);
در اینجا شما میتونید روی ویو مد نظرتون متد زیر رو صدا بزنید و رنگ مربوطه رو ست کنید
setColor(rainbow[1]);
OR
setBackground(rainbow[2])

حال شما لازم هست مقادیر موجود در این ارایه رو بگیرید(مثلا حلقه بزنید یا ایندکس خاصی از اون رو واکشی کنید)

 

البته در ادامه راجب تمام این موارد صحبت شده پس نگران باشید و جلسات رو ادامه بدید و در حد همان جلسات اموزش‌ها رو دنبال کنید هنگامی که دوره رو تمام کردید اگر موردی کم و کاست دیدید پیشنهاد بدید تا اضافه شود.

اینکه از همان ابتدا به دنبال یادگیری تمام مباحث باشید کمی در ادامه ممکن هست انرژی شما رو بگیره (این هم یه پیشنهاد بود از دید خودم به شما).

داکیومنت مربوطه:  لینک

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

 

لینک شماره ۲ 

بهترین پاسخ
پوریا شفیعی ۲۷ تیر ۱۴۰۰، ۱۲:۴۲

با عرض سلام

صحبت هاتون درست هست. منتهی من میخوام از این آرایه از رنگ‌ها در کلاس FragmentStateAdapter برای ViewPager استفاده کنم. هدفم این هست که با یک حلقه for مقادیر  متغیر هر fragment  شامل title , description   iconو  رنگ هر fragment را از ارایه‌های تعریف شده در فایل‌های xml دریافت کنم که با خطای FATAL EXCEPTION روبرو میشم. متد createFragmen از کلاس FragmentStateAdapter به صورت زیر تعریف کرده ام. 

public Fragment createFragment(int position) {
   String[] titles = context.getResources().getStringArray(R.array.titles);
   String[] descriptions =context.getResources().getStringArray(R.array.descriptions);
   int[] imageId ={R.drawable.ic_food ,R.drawable.ic_movie ,R.drawable.ic_discount    ,R.drawable.ic_travel,R.drawable.ic_hotel};
   int[] bgColors = context.getResources().getIntArray(R.array.bgcolors);
   for (int i = 0 ; i < 5; i++){
       slideFragmentViewPager = SlideFragmentViewPager.newInstance    (bgColors[position],imageId[position],titles[position],descriptions[position]);
    }
    return slideFragmentViewPager;
}
Elham Shafiei ۲۷ تیر ۱۴۰۰، ۱۹:۲۵