动态更改side_nav_bar.xml形状颜色的颜色

时间:2018-05-02 04:41:30

标签: java android

所以side_nav_bar.xml内部是这样的:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:id="@+id/colorNav">
<solid android:color="@color/colorPrimary"/>
</shape>

用于使用导航抽屉布局时。我想知道是否有一种方法可以动态地改变片段内的这种颜色。例如,我有一个设置片段,用户可以在其中选择三个不同的主题。我希望这个side_nav_bar.xml形状颜色与主题相匹配。我无法弄清楚如何在代码中以编程方式引用它。

下面的示例图片。我想根据主题选择改变粉红色。

Navigation Drawer

2 个答案:

答案 0 :(得分:1)

您可以像这样更改导航标题颜色。

if (  ... )
{     int RC = mql4zmq_msg_init_data(  aSendMsgOBJ,
                                       aSendMsgBuffUCHAR,
                                       aSendMsgBUFF_SIZE * 4
                                       );
   // if  RC   
   // ------------------------------------------------------.SEND()
      zmq_send( aZmqPUBLISHER,         aSendMsgOBJ );
   // ------------------------------------------------------.SEND()
      ...
}

答案 1 :(得分:1)

通过使用以下方法,您可以动态更改任何形状颜色。

public static void changeShapeColorRunTime(View view, int colorCode) {
        if (view == null) {
            return;
        }
        Drawable background = view.getBackground();
        if (background instanceof ShapeDrawable) {
            ((ShapeDrawable) background).getPaint().setColor(colorCode);
        } else if (background instanceof GradientDrawable) {
            ((GradientDrawable) background).setColor(colorCode);
        }
    }

只需将视图和颜色代码传递给方法,即可动态更改导航栏形状颜色的颜色。

相关问题