Привязка данных для стиля кнопок

Мне нужна помощь со ссылкой на приведенный ниже код. Мне нужно применить некоторые стили к кнопкам в приложении с другим радиусом, обводкой, цветами, текстом и т. Д. Мне нужно использовать логику привязки данных. Я написал простой класс, как показано ниже:

класс 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 как реализовать привязку данных.

Пожалуйста помоги. Заранее спасибо.

0 ответов

Другие вопросы по тегам