رفتن به مطلب

تغییر رنگ چک باکس سویچ ویو و سیک بار


ali mo

ارسال‌های توصیه شده

سلام و درود خدمت هم دوستان

سه تک کد می زارم که ساده هستند و برای تغییر رنگ  چک باکس سویچ ویو و سیک بار هستن

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

تغییر رنک چک باکس

که ابتدا ساب ها زیر تو اکتویتی وارد کنید :

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)

 

 

موفق باشید یاعلی

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

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

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...