更改Android ProgressBar的可见性

时间:2017-03-14 05:30:20

标签: android visibility android-progressbar

我已通过条件检查来决定ProgressBar是否应该出现。布局如下所示,ProgressBar包含RelativeLayout

<RelativeLayout
    android:id="@+id/someID"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <ProgressBar
        android:id="@+id/someProgressBar"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        />

</RelativeLayout>

在片段中:

 ProgressBar progressBar;

 @Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup   container,
                         @Nullable Bundle savedInstanceState) {
 View root = inflater.inflate(R.layout.some_main_layout, container, false);
 progressBar =(ProgressBar) root.findViewById(R.id.someProgressBar);
 ....

}

我尝试使用setVisibility()函数更改进度条的可见性,如:

   if(someCondition)
       progressBar.setVisibility(View.GONE);
   else
       progressBar.setVisibility(View.VISIBLE);

但上述情况永远不会奏效。因此,我尝试在xml级别进行更改,添加android:visibility="gone",将初始可见性设置为GONE状态,但我再次失去了如何使ProgressBar可见。

感谢您对此的看法。

感谢。

3 个答案:

答案 0 :(得分:3)

你可以尝试这个希望,它可以帮助你。

ProgressBar someProgressBar;
TextView txtSend;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    txtSend = (TextView) findViewById(R.id.txtSend);
    someProgressBar = (ProgressBar) findViewById(R.id.someProgressBar);
    someProgressBar.setVisibility(View.GONE);

    txtSend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if (someProgressBar.getVisibility() == View.GONE) {
                someProgressBar.setVisibility(View.VISIBLE);
            } else {
                someProgressBar.setVisibility(View.GONE);
            }
        }
    });

答案 1 :(得分:0)

用下面的代码替换你的代码,

if(someCondition)
   progressBar.setVisibility(View.INVISIBLE);
 else
   progressBar.setVisibility(View.VISIBLE);

答案 2 :(得分:0)

问题是您使用了错误的ID进度条。

ProgressBar someProgressBar=(ProgressBar) root.findViewById(R.id.someProgressBar);

   if(someCondition)
       someProgressBar.setVisibility(View.GONE);
   else
       someProgressBar.setVisibility(View.VISIBLE);

并更改进度条的xml代码。如果你想通过defaultprogress bar隐藏,那么保持原样,否则从xml中删除可见性。