Java 我可以在初始化set content view后更改Android按钮的样式吗?

Java 我可以在初始化set content view后更改Android按钮的样式吗?,java,android,Java,Android,我想根据字符串值在android按钮视图中显示不同样式的按钮,我可以通过编程实现吗 即使我设置了setTextAppearance,但我是否可以以编程方式使用SetStyle条件,因为它不反映在视图中 private Button dynakey[]= new Button[9];//8 buttons //Parse the values of buttons try { String sButtonString=""

我想根据字符串值在android按钮视图中显示不同样式的按钮,我可以通过编程实现吗

即使我设置了setTextAppearance,但我是否可以以编程方式使用SetStyle条件,因为它不反映在视图中

  private Button dynakey[]= new Button[9];//8 buttons       
        //Parse the values of buttons 
        try {
            String sButtonString="";
            JSONArray jArrayButton = 
            ResponseUIObject.getJSONArray("BUTTON");
            for(int k=0;k<8;k++) {
                int ID=k+1;
                String dynakeyID = "dynakey"+(ID);
                int resID  = getResources().getIdentifier(dynakeyID, "id", getPackageName());
                dynakey[ID] =(Button) findViewById(resID);
                sButtonString= jArrayButton.getString(k-0);
                 //Set Enable or Disable logic here
                if ((ID% 2) == 0) {
                    // number is even its a right side button //Change style of button depending upon the value
                    if(sButtonString.trim().length() == 0) {
                        //If string is not null or not empty then Enable the button else not
                        dynakey[ID].setTextAppearance(this, R.style.RightDisableDynakeyButton);
                    }else{
                        dynakey[ID].setTextAppearance(this, R.style.RightEnableDynakeyButton);
                    }
                }
                else {
                    // number is odd its a left side button //Change style of button depending upon the value
                    if(sButtonString.trim().length() ==0) {
                        //If string is not null or empty then Enable the button else not
                        dynakey[ID].setTextAppearance(this, R.style.LeftDisableDynakeyButton);
                    }else{
                        dynakey[ID].setTextAppearance(this, R.style.LeftEnableDynakeyButton);
                    }
                }
            }
        } 
您使用的这种形式的setTextAppearance已被弃用。将代码更改为类似以下内容:

自从API 23 setTextAppearancestyleId引入以来。 试试看。 编辑您的代码: 1这一行: 专用按钮动态键[]=新按钮[9]; 创建一个由9个按钮组成的数组,而不是注释中的8个按钮。 2在try块中应用更改我看不到catch块,因此不会传播任何错误。可能是按钮的ID不正确吗?
3发布您的样式和xml

我正在为按钮使用样式,我想更改按钮的样式
    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/shape_button_gray" android:state_enabled="false" />
    <item android:drawable="@drawable/shape_button_colored" android:state_enabled="true" />
</selector>
    <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/shape_button_gray" android:state_enabled="false" />
    <item android:drawable="@drawable/shape_button_colored" android:state_enabled="true" />
</selector>
       <Button
        android:id = "@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/selector_button"
        android:textColor="@android:color/white" />
if(sButtonString.trim().length() == 0) {
 dynakey[ID].setEnabled(true)
} else {
dynakey[ID].setEnabled(false)
}