在小吃栏中更改指示器颜色

时间:2018-07-20 15:49:35

标签: android android-snackbar

我在我的应用中使用此库:

  

实现'com.wang.avi:library:2.1.3'

我想自定义小吃栏,并向其中添加 TextView ProgressBar 。我的代码是这样的:

Snackbar loadingSnackBar = Snackbar.make(getActivity().getWindow().getDecorView().findViewById(R.id.main_viewpager), R.string.loading, Snackbar.LENGTH_INDEFINITE);
TextView tv = loadingSnackBar.getView().findViewById(android.support.design.R.id.snackbar_text);
tv.setTextColor(Color.BLACK);
loadingSnackBar.getView().setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorPrimary));
ViewGroup contentLay = (ViewGroup) tv.getParent();
AVLoadingIndicatorView indicator = new AVLoadingIndicatorView(getContext());
indicator.setIndicator("BallPulseIndicator");
indicator.setIndicatorColor(R.color.orange);
contentLay.addView(indicator, 100, 100);

小吃栏 TextView ProgressBar 一起正确显示,但是指示器的颜色是紫色,而不是橙色。 我该怎么做才能将指示器的颜色更改为橙​​色?

3 个答案:

答案 0 :(得分:1)

我无法以编程方式更改颜色。所以我这样创建my_indicator.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout     xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <com.wang.avi.AVLoadingIndicatorView
        android:id="@+id/progress_bar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center_horizontal"
        android:layout_marginBottom="14dp"
        app:indicatorName="BallPulseIndicator"
        app:indicatorColor="@color/orange"/>

</android.support.constraint.ConstraintLayout>

像这样将其添加到我的快餐栏

View snackView = inflater.inflate(R.layout.test, null);
contentLay.addView(snackView);

这种方法还可以,但是如果您能找到以编程方式更改颜色的解决方案,请告诉我!

答案 1 :(得分:0)

您可以尝试切换顺序吗?

indicator.setIndicatorColor(R.color.orange);
indicator.setIndicator("BallPulseIndicator");

或者,“ app:indicatorColor”可以设置颜色

<com.wang.avi.AVLoadingIndicatorView
    android:id="@+id/avi"
    android:layout_width="wrap_content"  //or your custom size
    android:layout_height="wrap_content"  //or your custom size
    style="@style/AVLoadingIndicatorView"// or AVLoadingIndicatorView.Large or AVLoadingIndicatorView.Small
    android:visibility="visible"  //visible or gone
    app:indicatorName="BallPulseIndicator"//Indicator Name
    app:indicatorColor="your color"
    />

引用自AVLoadingIndicatorView

答案 2 :(得分:0)

替换

indicator.setIndicatorColor(R.color.orange);

indicator.setIndicatorColor(ContextCompat.getColor(context,R.color.orange));

一切都会正常!祝你好运!