2017-03-14 8 views
-2

ProgressBar을 표시할지 여부를 결정하기 위해 조건 확인을했습니다. 조각에서Android ProgressBar의 가시성 변경

<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); 
.... 

}

내가 programtically 진행 표시 줄의 가시성을 변경하려고 ProgressBarRelativeLayout에 포함되는 경우 아래와 같이 레이아웃이 보인다 setVisibility()의 기능은 다음과 같습니다.

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

하지만 위는 절대로 작동하지 않습니다. 그래서 GONE 상태로 초기 가시성을 설정하는 android:visibility="gone"을 추가하여 xml 레벨에서 변경하려고 시도했지만 ProgressBar visibile을 만드는 방법을 다시 잃었습니다.

감사합니다.

감사합니다.

+1

귀하의 상태를 확인해야한다는 뜻입니다. 만족하니? – Piyush

+0

@Piyush : 방금 코드의 기본 구조를 설명했습니다. 나는 조건이 (디버깅을 통해) 작동하는지 확실히 안다. – vardhinisuresh27

+0

@ vardhinisuresh27 올바른 진행 막대의 가시성을 설정했는지 확인하고, 진행 막대를'someProgressBar'로 초기화하고 가시성을'progressBar'로 설정했습니다. 또한 진행률 막대를 전역 변수로 변경하여보십시오. – Redman

답변

0

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

이것이 OP 문제를 해결할 예정입니까? – Piyush

+1

당신은 많이 바뀌지 않았습니다. 아무런 차이가 없습니다. 눈에 보이지 않는 것은 그냥 지나간 후에도 공간을 차지할 것입니다. 이것 좀 봐 (http://stackoverflow.com/questions/11556607/android-difference-between-invisible-and-gone) – Redman

+0

예. 나는 같은 문제를 가지고있다. 얼마 동안 상대 레이아웃이이 문제를 만든다. 그래도 레이아웃에서 공간을 차지합니다. –

1

이 당신을 도울 수있는이 희망을 시도 할 수 있습니다, 아래로 코드를 교체합니다.

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); 
      } 
     } 
    }); 
+0

@ vardhinisuresh27 문제가 해결 되었습니까? 아니요 ?? –

0

문제는 진행률 표시 줄에 잘못된 ID를 사용하고 있습니다.

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

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

하고 숨길 defaultprogress 줄하여 원하는 bar.If 진행에 대한 XML 코드를 변경, 그대로 다음, 그렇지 않으면 XML에서 가시성을 제거, 보관하십시오.