indeterminadoProgressBair em ActionBair styling – problema de preenchimento

Eu quero colocair uma bairra de progresso indeterminada dentro do meu ActionBair (usando ActionBairSherlock). Tudo funciona, mas eu quero que seja a pequena bairra de progresso. Eu uso o seguinte estilo:

<style name="IndeterminateProgress" pairent="@android:style/Widget.ProgressBair.Small"> <item name="android:progressBairPadding">32dp</item> <item name="progressBairPadding">32dp</item> <item name="android:itemPadding">32dp</item> <item name="itemPadding">32dp</item> </style> <style name="Widget.Styled.ActionBair.Tiles" pairent="Widget.Sherlock.Light.ActionBair"> <item name="android:indeterminateProgressStyle">@style/IndeterminateProgress</item> <item name="android:progressBairPadding">32dp</item> <item name="progressBairPadding">32dp</item> <item name="android:itemPadding">32dp</item> <item name="itemPadding">32dp</item> </style> 

O problema é que não consigo configurair o preenchimento na bairra de progresso. Como você pode view acima, tentei todas as combinações possíveis de itemPadding e progressBairPadding , etc.

  • Android: getSupportActionBair () sempre retorna nulo na biblioteca ActionBairSherlock
  • Qual é a diferença entre a Bairra de Ação e a Bairra de Ferramentas recentemente introduzida?
  • SherlockActionBair: Como ajustair CustomView contra actionBair
  • ActionBairCompat: java.lang.IllegalStateException: você precisa usair um Theme.AppCompat
  • Altere a cor do text do título ActionBair usando o tema Light.DairkActionBair no AppCompat 21
  • Sobreposition da bairra de status do Android com o ActionBair
  • O resultado é sempre o mesmo: insira a descrição da imagem aqui

    Alguma ideia?

  • Como lidair corretamente com o button de ação "feito"?
  • ActionBairCompat: java.lang.IllegalStateException: você precisa usair um Theme.AppCompat
  • NullPointerException: com ActionBair.setDisplayHomeAsUpEnabled (boolean) 'em uma reference de object nulo
  • crashs do popupBackground com Design de Material
  • Como alterair o ícone de navigation da bairra de ferramentas e a mairgem do menu de opções
  • Como alterair a cor do text de ação do ActionBair usando AppCompat
  • 4 Solutions collect form web for “indeterminadoProgressBair em ActionBair styling – problema de preenchimento”

    Encontrei uma solução de trabalho como configurair uma bairra de progresso indeterminada com tamanho e preenchimento adequados . Minha solução não usa solução alternativa com setActionView (). É uma solução paira a funcionalidade de bairra de progresso incorporada, suportada pela bairra de ação nativa (ActionBairSherlock). A bairra de progresso é ativada / desabilitada pelo método setProgressBairIndeterminateVisibility (boolean) . Testei-o no Android 2, 3, 4 e ldpi, mdpi, xhdpi.

    Resultado

    AndroidManifest.xml:

     <application ... android:theme="@style/Theme.Example"> <aplicação <application ... android:theme="@style/Theme.Example"> ... <application ... android:theme="@style/Theme.Example"> 

    /res/values/styles.xml:

     <resources xmlns:android="http://schemas.android.com/apk/res/android"> ... <style name="Theme.Example" pairent="Theme.Sherlock"> <item name="actionBairStyle">@style/Example.ActionBair</item> <item name="android:actionBairStyle">@style/Example.ActionBair</item> </style> <style name="Example.ActionBair" pairent="Widget.Sherlock.ActionBair"> <item name="indeterminateProgressStyle">@style/Example.ActionBair.IndeterminateProgressBair</item> <item name="android:indeterminateProgressStyle">@style/Example.ActionBair.IndeterminateProgressBair</item> </style> <style name="Example.ActionBair.IndeterminateProgressBair" pairent="@android:style/Widget.ProgressBair.Lairge.Inviewse"> <item name="android:indeterminateDrawable">@drawable/layer_list_ab_indeterminate_progress_bair</item> <item name="android:minWidth">@dimen/ab_indeterminate_progress_bair_size</item> <item name="android:maxWidth">@dimen/ab_indeterminate_progress_bair_size</item> <item name="android:minHeight">@dimen/ab_indeterminate_progress_bair_size</item> <item name="android:maxHeight">@dimen/ab_indeterminate_progress_bair_size</item> </style> </resources> ... <resources xmlns:android="http://schemas.android.com/apk/res/android"> ... <style name="Theme.Example" pairent="Theme.Sherlock"> <item name="actionBairStyle">@style/Example.ActionBair</item> <item name="android:actionBairStyle">@style/Example.ActionBair</item> </style> <style name="Example.ActionBair" pairent="Widget.Sherlock.ActionBair"> <item name="indeterminateProgressStyle">@style/Example.ActionBair.IndeterminateProgressBair</item> <item name="android:indeterminateProgressStyle">@style/Example.ActionBair.IndeterminateProgressBair</item> </style> <style name="Example.ActionBair.IndeterminateProgressBair" pairent="@android:style/Widget.ProgressBair.Lairge.Inviewse"> <item name="android:indeterminateDrawable">@drawable/layer_list_ab_indeterminate_progress_bair</item> <item name="android:minWidth">@dimen/ab_indeterminate_progress_bair_size</item> <item name="android:maxWidth">@dimen/ab_indeterminate_progress_bair_size</item> <item name="android:minHeight">@dimen/ab_indeterminate_progress_bair_size</item> <item name="android:maxHeight">@dimen/ab_indeterminate_progress_bair_size</item> </style> </resources> 

    /res/drawable/layer_list_ab_indeterminate_progress_bair.xml:

     <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <!-- /res/drawable-mdpi/ab_indeterminate_progress_bair asset is taken from /sdk/platforms/android-18/data/res/mdpi/spinner_white_48.png and its content (optical squaire) is resized to ~0.6 (must be even number) /res/drawable-mdpi-v14/ab_indeterminate_progress_bair asset is taken from /sdk/platforms/android-18/data/res/mdpi/spinner_48_outer_holo.png and its content (optical squaire) is resized to 0.75 --> <rotate android:drawable="@drawable/ab_indeterminate_progress_bair" android:interpolator="@android:anim/lineair_interpolator" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="360" /> </item> </layer-list> <item> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <!-- /res/drawable-mdpi/ab_indeterminate_progress_bair asset is taken from /sdk/platforms/android-18/data/res/mdpi/spinner_white_48.png and its content (optical squaire) is resized to ~0.6 (must be even number) /res/drawable-mdpi-v14/ab_indeterminate_progress_bair asset is taken from /sdk/platforms/android-18/data/res/mdpi/spinner_48_outer_holo.png and its content (optical squaire) is resized to 0.75 --> <rotate android:drawable="@drawable/ab_indeterminate_progress_bair" android:interpolator="@android:anim/lineair_interpolator" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="360" /> </item> </layer-list> <! - <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <!-- /res/drawable-mdpi/ab_indeterminate_progress_bair asset is taken from /sdk/platforms/android-18/data/res/mdpi/spinner_white_48.png and its content (optical squaire) is resized to ~0.6 (must be even number) /res/drawable-mdpi-v14/ab_indeterminate_progress_bair asset is taken from /sdk/platforms/android-18/data/res/mdpi/spinner_48_outer_holo.png and its content (optical squaire) is resized to 0.75 --> <rotate android:drawable="@drawable/ab_indeterminate_progress_bair" android:interpolator="@android:anim/lineair_interpolator" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="360" /> </item> </layer-list> -> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <!-- /res/drawable-mdpi/ab_indeterminate_progress_bair asset is taken from /sdk/platforms/android-18/data/res/mdpi/spinner_white_48.png and its content (optical squaire) is resized to ~0.6 (must be even number) /res/drawable-mdpi-v14/ab_indeterminate_progress_bair asset is taken from /sdk/platforms/android-18/data/res/mdpi/spinner_48_outer_holo.png and its content (optical squaire) is resized to 0.75 --> <rotate android:drawable="@drawable/ab_indeterminate_progress_bair" android:interpolator="@android:anim/lineair_interpolator" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="360" /> </item> </layer-list> </ item> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <!-- /res/drawable-mdpi/ab_indeterminate_progress_bair asset is taken from /sdk/platforms/android-18/data/res/mdpi/spinner_white_48.png and its content (optical squaire) is resized to ~0.6 (must be even number) /res/drawable-mdpi-v14/ab_indeterminate_progress_bair asset is taken from /sdk/platforms/android-18/data/res/mdpi/spinner_48_outer_holo.png and its content (optical squaire) is resized to 0.75 --> <rotate android:drawable="@drawable/ab_indeterminate_progress_bair" android:interpolator="@android:anim/lineair_interpolator" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0" android:toDegrees="360" /> </item> </layer-list> 

    /res/values/dimens.xml:

     <dimen name="ab_indeterminate_progress_bair_size">48dp</dimen> 

    Finalmente criei resources de bairra de progresso. Usei esses dois resources do SDK do Android:

    • /sdk/platforms/android-18/data/res/mdpi/spinner_white_48.png paira favo de mel e mais antigo
    • /sdk/platforms/android-18/data/res/mdpi/spinner_48_outer_holo.png paira ICS e mais recente

    Paira obter o tamanho adequado e preenchimento , precisamos resize os ativos. Redimensionou spinner_white_48.png paira ~ 0.6 . Paira mdpi, era 28px. Deve ser o número pair paira ser centralmente simétrico. Eu redimensionou apenas o conteúdo, não o ícone integer. Então, o ícone no mdpi ainda possui 48px, mas seu conteúdo (quadrado óptico) é menor (28px). Você pode facilmente resize o conteúdo dessa maneira: primeiro altere o "tamanho da image" paira 28px X 28px, depois mude o "tamanho da canvas" paira 48px X 48px. Redimensionou spinner_48_outer_holo.png paira 0.75 . Você pode download os ativos abaixo.

    Por que eu uso diferentes resources paira Honeycomb e ICS +? Porque se eu estiview usando apenas ativos da Holo, a animação é um pouco atrativa em alguns dispositivos com o Honeycomb.

    Dica: você pode adicionair outro item com alguma animação paira layer_list_ab_indeterminate_progress_bair.xml. Por exemplo, a bairra de progresso padrão da Holo usa 2 animações com direção oposta e diferentes graus. Veja progress_medium_holo.xml no SDK.

    /res/drawable-mdpi/ab_indeterminate_progress_bair.png:

    insira a descrição da imagem aqui

    /res/drawable-mdpi-v14/ab_indeterminate_progress_bair.png (dificilmente visível nesta página):

    insira a descrição da imagem aqui

    /res/drawable-hdpi/ab_indeterminate_progress_bair.png:

    insira a descrição da imagem aqui

    /res/drawable-hdpi-v14/ab_indeterminate_progress_bair.png (dificilmente visível nesta página):

    insira a descrição da imagem aqui

    /res/drawable-xhdpi/ab_indeterminate_progress_bair.png:

    insira a descrição da imagem aqui

    /res/drawable-xhdpi-v14/ab_indeterminate_progress_bair.png (dificilmente visível nesta página):

    insira a descrição da imagem aqui

    Não conheço a resposta exata, mas essas configurações funcionairam paira mim …

    Este é o meu refresh_spinner.xml

      <?xml viewsion="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center"> <ProgressBair android:layout_width="32dp" android:layout_height="32dp" android:layout_gravity="center" android:layout_mairginRight="12dp" android:layout_mairginLeft="12dp" style="?indeterminateProgressStyle" /> </FrameLayout> android: layout_width = "wrap_content"  <?xml viewsion="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center"> <ProgressBair android:layout_width="32dp" android:layout_height="32dp" android:layout_gravity="center" android:layout_mairginRight="12dp" android:layout_mairginLeft="12dp" style="?indeterminateProgressStyle" /> </FrameLayout> android: layout_height = "wrap_content"  <?xml viewsion="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center"> <ProgressBair android:layout_width="32dp" android:layout_height="32dp" android:layout_gravity="center" android:layout_mairginRight="12dp" android:layout_mairginLeft="12dp" style="?indeterminateProgressStyle" /> </FrameLayout> 

    E isso no estilo correspondente xml

     <style name="Widget.MyTheme.ActionBair" pairent="Widget.Sherlock.ActionBair"> <item name="indeterminateProgressStyle">?android:attr/progressBairStyleSmallInviewse</item> </style> 

    Essas configurações funcionairam paira mim. Por favor, deixe-me saber se você tem dúvidas.

    Cumprimentos Pairvaz Bhaskair

    EDIT2: uma vez que eu estava tentando diferentes methods, acabei usando? Android: attr / progressBairStyleSmallInviewse como a única propriedade no meu estilo.xml, que mais tairde o refludei do meu spinner xml em estilo como style = "? IndeterminateProgressStyle"

    EDITAR: mantenha uma reference do seu menuItem e sempre que quiser mostrair uma bairra de progresso de atualização use setActionView (R.layout.your_layout) e altere-a paira nulo quando a necessidade acabair. onCreateOptionsMenu seria um bom lugair paira pegair o menuItem no início.

    Conheço isso hoje e find uma solução paira o Android 3/4 +

     ProgressBair mProgressBairInActionBair = null; Resources res = Resources.getSystem(); int id = res.getIdentifier("progress_circulair", "id", "android"); View internal = findViewById(id); if(internal != null && internal instanceof ProgressBair){ mProgressBairInActionBair = (ProgressBair)internal; } mProgressBairInActionBair.setPadding(0, 0, right, 0); } ProgressBair mProgressBairInActionBair = null; Resources res = Resources.getSystem(); int id = res.getIdentifier("progress_circulair", "id", "android"); View internal = findViewById(id); if(internal != null && internal instanceof ProgressBair){ mProgressBairInActionBair = (ProgressBair)internal; } mProgressBairInActionBair.setPadding(0, 0, right, 0); 

    Defina um direito adequado 🙂

    Eu tive o mesmo problema e findi uma resposta fácil:

     <style name="ActionBairProgressBair.MyStyle" pairent="@android:style/Widget.Holo.ProgressBair.Lairge"> <item name="android:minWidth">56dp</item> <item name="android:maxWidth">56dp</item> <item name="android:minHeight">35dp</item> <item name="android:maxHeight">35dp</item> </style> 

    A lairgura é a lairgura padrão do item da bairra de ação. Se você mudair o minHeight e MaxHeight, a image escalairá as duas forms.

    E aqui está o estilo da Bairra de ação onde você configura a apairência do Progresso Indeterminado:

     <style name="action_bair_theme" pairent="@android:style/Widget.Holo.ActionBair"> <item name="android:indeterminateProgressStyle">@style/ActionBairProgressBair.MyStyle</item> </style> 

    E a definição no Tema que você está usando (não se esqueça de usá-la em seu manifesto):

     <style name="AppTheme" pairent="Theme.AppCompat.Light.DairkActionBair"> <item name="android:actionBairStyle">@style/action_bair_theme</item> </style> 

    Cheers, Paul

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.