ali mo 262 ارسال شده در 11 اسفند، ۱۳۹۸ اشتراک گذاری ارسال شده در 11 اسفند، ۱۳۹۸ سلام و درود خدمت هم دوستان سه تک کد می زارم که ساده هستند و برای تغییر رنگ چک باکس سویچ ویو و سیک بار هستن امیدوارم که به کار دوستان بیاد (چون من خیلی گشتم تا پیدا کنم :)) تغییر رنک چک باکس که ابتدا ساب ها زیر تو اکتویتی وارد کنید : Sub SetButtonTintList(View As View, Disabled As Int, Enabled As Int) Try Dim States(2,1) As Int Dim sd As StateListDrawable 'ignore States(0, 0) = sd.State_Enabled States(1, 0) = sd.State_Disabled Dim Color(2) As Int = Array As Int(Enabled, Disabled) Dim CSL As JavaObject CSL.InitializeNewInstance("android.content.res.ColorStateList",Array(States,Color)) Dim jo As JavaObject jo.InitializeStatic("android.support.v4.widget.CompoundButtonCompat") jo.RunMethod("setButtonTintList", Array(View, CSL)) Catch Log(LastException) End Try End Sub Private Sub SetColor Try Private C1,C2 As Int = 0 For Each v As View In Activity.GetAllViewsRecursive If v Is CheckBox Then C1 = Rnd(0,LstColors.Size - 1) C2 = Rnd(0,LstColors.Size - 1) SetButtonTintList(v, LstColors.Get(C1), LstColors.Get(C2)) End If Next Catch Log(LastException) End Try End Sub برای استفاده هم به صورت زیر هست : Dim LstColors As List LstColors.Initialize LstColors.Add(Colors.red) LstColors.Add(Colors.red) LstColors.Add(Colors.Red) SetColor 'که اینجا میاد سه تا چک باکس رنگی قرمز میده کلی 'اگر خواستید بیشتر بشه تعداد اضافه کردن به لیست افزایش بدید تغییر رنگ سیکبار : کد زیر رو که جاوا اضافه کنید ( تو هرجای از اکتویتی) #if java import android.graphics.PorterDuff; import android.widget.SeekBar; public void ChangeColor(SeekBar seekbar,int Color) { seekbar.getProgressDrawable().setColorFilter(Color, PorterDuff.Mode.SRC_IN); seekbar.getThumb().setColorFilter(Color, PorterDuff.Mode.SRC_IN); } #End If برای استفاده به طور مثال سیکبار 1 رو به رنگ ابی تغییر می دیم به شکل زیر : Dim jo As JavaObject jo.InitializeContext jo.RunMethod("ChangeColor",Array As Object(SeekBar1,Colors.Blue)) تغییر رنگ سویج ویو : برای اضافه کردن سویچ ویو کافیه کتابخونه appcompent دانلود کنید و تیکش بزنید و کد زیر به اکتویتی اضافه کنید #Extends: android.support.v7.app.AppCompatActivity و کد زیر هم به منفیست اضافه کنید SetApplicationAttribute(android:theme, "@style/Theme.AppCompat") CreateResource(values, theme.xml, <resources> <style name="MyAppTheme" parent="@style/Theme.AppCompat.NoActionBar"> <item name="colorPrimary">#FF9800</item> <item name="colorPrimaryDark">#F57C00</item> <item name="colorAccent">#FFA726</item> </style> </resources> ) بعد کافیه فقط به دیزاینر بروید از قسمت add customview سویج ویو رو اد کنید و در نهایت برای تغییر رنگش : دو تابع زیر اضافه کنید : Sub SetSwitchColors (Switch As ACSwitch, On As Int, Off As Int) Dim p As Phone If p.SdkVersion < 16 Then Return Dim DrawableCompat As JavaObject DrawableCompat.InitializeStatic("android.support.v4.graphics.drawable.DrawableCompat") Dim jo As JavaObject = ACSwitch1 DrawableCompat.RunMethod("setTintList", Array(jo.RunMethod("getThumbDrawable", Null), CreateColorStateList(On, Off))) End Sub 'Based on: https://www.b4x.com/android/forum/threads/colorstatelist.40788/#content Sub CreateColorStateList(On As Int,Off As Int) As Object Dim sd As StateListDrawable 'ignore Dim States(2,1) As Int States(0,0) = sd.State_Checked States(1,0) = sd.State_Enabled Dim CSL As JavaObject CSL.InitializeNewInstance("android.content.res.ColorStateList",Array(States, Array As Int(On, Off))) Return CSL End Sub و برای استفاده هم کافیه به شکل زیر عمل کنید SetSwitchColors (ACSwitch1, Colors.Red, Colors.Red) موفق باشید یاعلی لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.