Привязка данных для стиля кнопок
Мне нужна помощь со ссылкой на приведенный ниже код. Мне нужно применить некоторые стили к кнопкам в приложении с другим радиусом, обводкой, цветами, текстом и т. Д. Мне нужно использовать логику привязки данных. Я написал простой класс, как показано ниже:
класс genbtn
package com.dls.androidprojecttests;
import android.graphics.Color;
public class genbtn
{
public String text="";
public int background=Color.GREEN;
public int radius=1;
public int angle=-90;
public int scolor= Color.BLUE;
public int ecolor=Color.WHITE;
public int stroke=1;
public int strokecolor=Color.BLACK;
public String getdlsbtnText() {return this.text;}
public int getdlsbtnBackground() {return this.background;}
public int getdlsbtnRadius(){return this.radius;}
public int getdlsbtnAngle() {return this.angle;}
public int getdlsbtnScolor() {return this.scolor;}
public int getdlsbtnEcolor() {return this.ecolor;}
public int getdlsbtnStroke() {return this.stroke;}
public int getdlsbtnStrokecolor() {return this.strokecolor;}
public void setdlsbtnText (String text) {this.text=text;}
public void setdlsbtnBackground (int background)
{this.background=background;}
public void setdlsbtnRadius(int radius) {this.radius=radius;}
public void setdlsbtnAngle(int angle) {this.angle=angle;}
public void setdlsbtnScolor(int scolor) {this.scolor=scolor;}
public void setdlsbtnEcolor(int ecolor) {this.ecolor=ecolor;}
public void setdlsbtnStroke(int stroke) {this.stroke=stroke;}
public void setdlsbtnStrokecolor(int strokecolor) {
this.strokecolor=strokecolor;}
}
Вышеупомянутый класс я использую в приведенном ниже XML для двух объектов кнопки с идентификатором btn1 и btn2.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="dlsbtnclassb1"
type="com.dls.androidprojecttests.genbtn" />
<variable
name="dlsbtnclassb2"
type="com.dls.androidprojecttests.genbtn" />
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp"
tools:context="com.dls.androidprojecttests.MainActivity">
<Button
android:id="@+id/btn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center"
android:textSize="20sp"
android:textColor="#000000"
android:background="@{dlsbtnclassb1.background}"
android:text="@{dlsbtnclassb1.text}">
</Button>
<Button
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center"
android:textSize="20sp"
android:textColor="#000000"
android:background="@{dlsbtnclassb2.background}"
android:text="@{dlsbtnclassb2.text}">
</Button>
<Button
android:id="@+id/btnchange"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center"
android:textSize="25sp"
android:background="@android:color/holo_red_dark"
android:textColor="#fff"
android:text="Change Colours">
</Button>
<Button
android:id="@+id/btnanother"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center"
android:textSize="25sp"
android:background="@android:color/holo_red_dark"
android:textColor="#fff"
android:text="Another Activity"
android:onClick="callanotheractivity">
</Button>
</LinearLayout>
</layout>
Это прикрепленный код Java, где я создал объекты класса и присвоил значения, и он действует на кнопки.
MainActivity.java
package com.dls.androidprojecttests;
import android.content.Intent;
import android.databinding.DataBindingUtil;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import com.dls.androidprojecttests.databinding.ActivityMainBinding;
public class MainActivity extends AppCompatActivity {
ActivityMainBinding Bactivitymain;
genbtn genbtnObj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bactivitymain = DataBindingUtil.setContentView(this,R.layout.activity_main);
genbtnObj = new genbtn();
genbtnObj.background=Color.CYAN;
genbtnObj.text="Cyan Color";
Bactivitymain.setDlsbtnclassb1(genbtnObj);
genbtnObj = new genbtn();
genbtnObj.background=Color.DKGRAY;
genbtnObj.text="dkgray Color";
Bactivitymain.setDlsbtnclassb2(genbtnObj);
Bactivitymain.btnchange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
genbtnObj = new genbtn();
genbtnObj.background=Color.RED;
genbtnObj.text="Red Color";
Bactivitymain.setDlsbtnclassb1(genbtnObj);
genbtnObj = new genbtn();
genbtnObj.background=Color.YELLOW;
genbtnObj.text="Yellow Color";
Bactivitymain.setDlsbtnclassb2(genbtnObj);
}
});
}
public void callanotheractivity(View v)
{
Intent mintent = new Intent();
mintent.setClass(this, Another.class);
startActivity(mintent);
}
}
Здесь, кроме цвета и текста, если мне нужно изменить некоторые стили, такие как радиус, градиент и т. Д., Мы должны применить некоторый селектор xml к фону кнопки. В таком случае в селекторе xml как реализовать привязку данных.
Пожалуйста помоги. Заранее спасибо.