2016-08-11 3 views
3

Я хочу сделать круговой индикатор выполнения внутри кнопки. но я не хочу использовать библиотеку как dmytrodanylyk/circular-progress-button, etc..Как установить круговую панель прогресса внутри кнопки в android

Я думаю, что это решение используется drawable.

так, я сделать circular_progress.xml,

<?xml version="1.0" encoding="utf-8"?> 
    <rotate xmlns:android="http://schemas.android.com/apk/res/android" 
     android:fromDegrees="0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:duration="1" 
     android:toDegrees="360" > 

     <shape 
      android:innerRadiusRatio="3" 
      android:shape="ring" 
      android:thicknessRatio="8" 
      android:useLevel="false" > 
      <size 
       android:height="48dip" 
       android:width="48dip" /> 

      <gradient 
       android:centerColor="#f0f0f0" 
       android:centerY="0.50" 
       android:endColor="#000000" 
       android:startColor="#ffffff" 
       android:type="sweep" 
       android:useLevel="false" /> 
     </shape> 

    </rotate> 

и,

<Button 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:text="Log In" 
       android:layout_below="@+id/passwordWrapper" 
       android:layout_marginTop="5dp" 
       android:theme="@style/AppTheme.SignButton" 
       android:id="@+id/loginButton" 
       android:drawableRight="@drawable/circular_progress" 
       /> 

enter image description here

но прогресс бар остановлен.

Вторым решением является создание пользовательского класса кнопок с прогрессивной панелью.

но я не знаю, чтобы пользовательский класс кнопок имел прогрессбар.

ответ

5

Использование ProgressBar внутри кнопки, как этот

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<Button 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:text="Log In" 
    android:layout_below="@+id/passwordWrapper" 
    android:layout_marginTop="5dp" 
    android:theme="@style/AppTheme.SignButton" 
    android:id="@+id/loginButton" 
    /> 
<ProgressBar 
    android:id="@+id/progress_bar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true"/> 
</RelativeLayout> 

и в вашей деятельности инициализировать ProgressBar как этот

ProgressBar progressBar = (ProgressBar) findViewById(R.id.progress_bar); 

и добавить, когда вы хотите, чтобы ProgressBar быть видимым

progressBar.setVisibility(View.VISIBLE); 

, а затем добавьте это, если вы хотите скрыть свой ProgressBar

progressBar.setVisibility(View.GONE); 
Смежные вопросы