【问题标题】:Issue facing when progressbar.setprogress(0)progressbar.setprogress(0) 时面临的问题
【发布时间】:2017-04-24 04:59:03
【问题描述】:

我在 viewpager 页面 0 中有一个进度条。 这是进度条:

 <ProgressBar
                        android:id="@+id/mytask_today_progressBar"
                        style="?android:attr/progressBarStyleHorizontal"
                        android:layout_width="113dp"
                        android:layout_height="113dp"
                        android:indeterminate="false"
                        android:max="100"
                        android:progress="0"
                        android:progressDrawable="@drawable/custom_progress_small"
                        android:secondaryProgress="0" />

现在,当该页面加载时,我将进度条设置为 0,我得到如下完美的屏幕:

这是我使用的代码:

mainActivity.sout("per_mytask_today : "+per_mytask_today);
    mytask_today_progressBar.setProgress(1);
    mainActivity.sout("mytask_today_progressBar.getprogress() : "+mytask_today_progressBar.getProgress());

    mytask_week_progressBar.setProgress(0);

    mytask_today_progresstxt.setText(1+"");
    mytask_week_progresstxt.setText(0+"");

当我像这样交换视图寻呼机的页面并返回同一页面时,设置为 0 的进度条已更改。像这样:

如您所见,进度条设置为 1(或者实际上是 1-100 之间的任何其他值)不会改变,只会改变 0。

这是我为此使用的可绘制对象(这是否会造成问题):

<?xml version="1.0" encoding="utf-8"?>

    <item>
        <!-- Our second ring -->
        <shape android:shape="ring"
            android:useLevel="true"
            android:innerRadius="40dp"
            android:thicknessRatio="8">
            <solid android:color="@color/colorPrimaryDark"> </solid>
        </shape>
    </item>
</layer-list>

【问题讨论】:

  • 我认为您的最后一行代码总是使文本成为0,而实际值是什么并不重要。 mytask_week_progresstxt.setText(0+"")。因此,基本上您需要将 .setText 更改为任何价值,而不是使其成为静态。
  • 否,但它适用于 1-100 的值。只有 0 才引起问题

标签: android android-progressbar


【解决方案1】:

这更可能取决于您在哪里设置进度。理想情况下,您应该将该代码放入 onPageSelected

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {

       //Set your progress here 

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

【讨论】:

  • 但是为什么当我设置0以外的值时它不会引起问题
  • 您可能将该设置代码设置在初始状态的某个位置,当您调用 ViewPager 时调用一次,并且不应该在您的页面滑动时调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-27
  • 2020-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多