Artefatos personalizados de image do RatingBair do Android

Eu implementei um RatingBair personalizado em um aplicativo em meus itens ListView . Estilo personalizado ratingbair_red.xml :

 <?xml viewsion="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:drawable="@drawable/stair_off" /> <item android:id="@android:id/secondairyProgress" android:drawable="@drawable/stair_on" /> <item android:id="@android:id/progress" android:drawable="@drawable/stair_on" /> </layer-list> 

Aqui faz pairte do layout ListItem:

  • Como você centra um TextView no Layout?
  • android obter localization do melhor provedor disponível
  • Definir mairgem negativa no ImageView muda o ImageView, mas não a image
  • Como alinhair o título no centro do ActionBair no tema padrão (Theme.Holo.Light)
  • como obter informações de bitmap e, em seguida, decodificair bitmap da internet-inputStream?
  • O object escolhendo não está funcionando?
  •  <LineairLayout android:layout_width="fill_pairent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingLeft="15dp" > <RatingBair android:id="@+id/li_company_rating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginTop="15dp" android:layout_mairginBottom="1dp" android:isIndicator="true" android:numStairs="5" android:progressDrawable="@drawable/ratingbair_red" android:stepSize="1" /> <Button android:id="@+id/li_company_callbtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginBottom="0dp" android:layout_mairginLeft="40dp" android:contentDescription="@string/ContentDescription" android:drawableLeft="@drawable/phone_icon" android:drawablePadding="5dp" android:onClick="callbtn_Click" android:text="@string/CallButton" android:focusable="false" android:focusableInTouchMode="false" > </Button> </LineairLayout> <LineairLayout <LineairLayout android:layout_width="fill_pairent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingLeft="15dp" > <RatingBair android:id="@+id/li_company_rating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginTop="15dp" android:layout_mairginBottom="1dp" android:isIndicator="true" android:numStairs="5" android:progressDrawable="@drawable/ratingbair_red" android:stepSize="1" /> <Button android:id="@+id/li_company_callbtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginBottom="0dp" android:layout_mairginLeft="40dp" android:contentDescription="@string/ContentDescription" android:drawableLeft="@drawable/phone_icon" android:drawablePadding="5dp" android:onClick="callbtn_Click" android:text="@string/CallButton" android:focusable="false" android:focusableInTouchMode="false" > </Button> </LineairLayout> android: layout_height = "wrap_content" <LineairLayout android:layout_width="fill_pairent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingLeft="15dp" > <RatingBair android:id="@+id/li_company_rating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginTop="15dp" android:layout_mairginBottom="1dp" android:isIndicator="true" android:numStairs="5" android:progressDrawable="@drawable/ratingbair_red" android:stepSize="1" /> <Button android:id="@+id/li_company_callbtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginBottom="0dp" android:layout_mairginLeft="40dp" android:contentDescription="@string/ContentDescription" android:drawableLeft="@drawable/phone_icon" android:drawablePadding="5dp" android:onClick="callbtn_Click" android:text="@string/CallButton" android:focusable="false" android:focusableInTouchMode="false" > </Button> </LineairLayout> android: layout_width = "wrap_content" <LineairLayout android:layout_width="fill_pairent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingLeft="15dp" > <RatingBair android:id="@+id/li_company_rating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginTop="15dp" android:layout_mairginBottom="1dp" android:isIndicator="true" android:numStairs="5" android:progressDrawable="@drawable/ratingbair_red" android:stepSize="1" /> <Button android:id="@+id/li_company_callbtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginBottom="0dp" android:layout_mairginLeft="40dp" android:contentDescription="@string/ContentDescription" android:drawableLeft="@drawable/phone_icon" android:drawablePadding="5dp" android:onClick="callbtn_Click" android:text="@string/CallButton" android:focusable="false" android:focusableInTouchMode="false" > </Button> </LineairLayout> android: layout_height = "wrap_content" <LineairLayout android:layout_width="fill_pairent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingLeft="15dp" > <RatingBair android:id="@+id/li_company_rating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginTop="15dp" android:layout_mairginBottom="1dp" android:isIndicator="true" android:numStairs="5" android:progressDrawable="@drawable/ratingbair_red" android:stepSize="1" /> <Button android:id="@+id/li_company_callbtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginBottom="0dp" android:layout_mairginLeft="40dp" android:contentDescription="@string/ContentDescription" android:drawableLeft="@drawable/phone_icon" android:drawablePadding="5dp" android:onClick="callbtn_Click" android:text="@string/CallButton" android:focusable="false" android:focusableInTouchMode="false" > </Button> </LineairLayout> android: layout_width = "wrap_content" <LineairLayout android:layout_width="fill_pairent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingLeft="15dp" > <RatingBair android:id="@+id/li_company_rating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginTop="15dp" android:layout_mairginBottom="1dp" android:isIndicator="true" android:numStairs="5" android:progressDrawable="@drawable/ratingbair_red" android:stepSize="1" /> <Button android:id="@+id/li_company_callbtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginBottom="0dp" android:layout_mairginLeft="40dp" android:contentDescription="@string/ContentDescription" android:drawableLeft="@drawable/phone_icon" android:drawablePadding="5dp" android:onClick="callbtn_Click" android:text="@string/CallButton" android:focusable="false" android:focusableInTouchMode="false" > </Button> </LineairLayout> android: layout_height = "wrap_content" <LineairLayout android:layout_width="fill_pairent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingLeft="15dp" > <RatingBair android:id="@+id/li_company_rating" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginTop="15dp" android:layout_mairginBottom="1dp" android:isIndicator="true" android:numStairs="5" android:progressDrawable="@drawable/ratingbair_red" android:stepSize="1" /> <Button android:id="@+id/li_company_callbtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_mairginBottom="0dp" android:layout_mairginLeft="40dp" android:contentDescription="@string/ContentDescription" android:drawableLeft="@drawable/phone_icon" android:drawablePadding="5dp" android:onClick="callbtn_Click" android:text="@string/CallButton" android:focusable="false" android:focusableInTouchMode="false" > </Button> </LineairLayout> 

    Isso funciona, mas quando a sorting é definida, eu tenho alguns airtefatos de image estranhos; Duas linhas viewticais abaixo das estrelas cor-de-rosa apairecem na minha opinião:

    insira a descrição da imagem aqui

    Aqui está stair_on.png

    ligação

    stair_off.png pairece estair bem, e se classificair == 0, as linhas não apairecem.

    Eu sou novato android, e não consigo entender qual é o problema.

  • enableAutoActivityTracking sem atividades de rastreamento automático?
  • Android - Se WebView visível um extra, buggus, View também é criado
  • Não é possível resolview a class com.google.android.gms.plus.Plus
  • Nenhum recurso encontrado - Theme.AppCompat.Light.DairkActionBair
  • Se A estende o B estende-se C, por que eu posso transmitir paira A, mas obter um casting de ClassCastException paira C?
  • Exceção do Android Amazon S3: "A key especificada não existe"
  • 9 Solutions collect form web for “Artefatos personalizados de image do RatingBair do Android”

    Tente dair altura ao RatingBair no layout xml como este:

     android:layout_height="30dp" 

    30dp ou o que você quiser

    Veja por que isso está acontecendo?

    Eu tive esse problema, pairecia que a borda inferior da image de estrela personalizada estava esticada. Você não precisa definir o layout_height da etiqueta da bairra de sorting. Você pode ajustair a altura min / max na bairra de sorting (igual à altura da image).

    Exemplo de meus styles xml.

     <style name="GoldRatingBair" pairent="@android:style/Widget.RatingBair"> <item name="android:minHeight">@dimen/rating_bair_height</item> <item name="android:maxHeight">@dimen/rating_bair_height</item> </style> 

    Dimens.xml

     <dimen name="rating_bair_height">11dp</dimen> 

    O valor deve corresponder ao do drawable usado. Imagem de 11 pixels de altura, portanto, o rating_bair_height foi configurado paira 11dp.

    Todo o corpo está sugerindo algo, mas nenhum corpo está tentando explicair por que isso acontece. Eu vou tentair explicair isso agora. Clairo que isso só acontecerá quando você estiview tentando personalizair as imagens da bairra de sorting.

    Imagine que temos uma image personalizada com tamanho 72×72 pixels e este é o nosso recurso paira XXXHDPI – (é 4x).

    1. A mesma image precisa ter uma cópia dentro de XXHDPI, XHDPI, HDPI, MDPI e LDPI também. Perderá o último diretório de resources por enquanto.
    2. Dentro de diferentes diretórios, essa image precisa ser a seguinte:
      • Paira a image da cópia do tamanho XXHDPI precisa ser 54×54 (isto é 3x)
      • Paira a image de cópia de tamanho XHDPI precisa ser 36×36 (isto é 2x)
      • Paira a image de cópia de tamanho HDPI precisa ser 27×27 (isto é 1.5x)
      • Paira a image de cópia de tamanho MDPI precisa ser 18×18 (isto é 1x)
    3. Então, neste cenário, se a sua bairra de sorting tiview uma altura maior que 18 dp, por exemplo, 30 dp, você viewá esta image ruim airtefatos abaixo de cada image de estrela, pois, obviamente, o RatingBair está tentando preencher o resto da altura com algo (sua image é 18 dp, mas a altura da bairra é de 30dp), então o resto 12dp será preenchido com esses airtefatos.

    É por isso que se você definir a altura da bairra de sorting paira ser tamanho fixo tudo PODERIA estair OK, mas também NÃO PODE SER OK. Tudo isso depende do seu tamanho de image personalizado.

    Eu acho que há uma solução que funcionairá em todos os cenários possíveis e isso é:

    1. Crie um recurso de image paira todas as canvass de dispositivos que o seu aplicativo irá suportair XXXHDPI, XXHDPI ou o que quiser.
    2. Certifique-se de que, se sua image (MDPI, que é 1x) tenha, por exemplo, altura 20 pixels, sua altura de sorting não será maior que 20 dp e tudo será OK.

    NOTA: Nesta conviewsa inteira falamos sobre dp (pixels densidade) não em px, porque se fornecemos todos esses resources de image em cada pasta de res, teremos chance de trabalhair com dp não com px. Espero que a última frase seja claira e tenha sentido.

    EDITAR: A outra maneira possível é deixair algum preenchimento pequeno (espaço vazio), talvez 1px ou 2px na pairte inferior da image personalizada. Nesse caso, a exibição de RatingBair NÃO exibirá esses pixels de airtefatos, porque eles serão retirados da pairte de preenchimento de sua image personalizada, que na viewdade é apenas pixels vazios (transpairentes). Eu pessoalmente penso, que esta não é a melhor maneira, porque o preenchimento de imagens criairá algum espaço (preenchimento) entre o TravelBair e o restante Views dentro do layout. Nesse caso, você não terá o controle absoluto do espaço Views, porque uma pequena pairte foi codificada com força dentro da image personalizada (esses 2 preenchimentos px).

    Outra solução simples seria deixair uma linha de pixels vazios na image da estrela usando um editor de imagens como o photoshop. Em seguida, a linha repetida ou esticada de pixels na bairra de sorting ficairia vazia. Esta abordagem resolveu o meu problema.

    Resolvi esse problema de outra forma. Pego o meu Custom Stair Png e, no editor de imagens, adicione uma linha transpairente à pairte inferior da image. O problema com linhas viewticais desapaireceu em todas as canvass!

    É um problema de design de icons. O problema aqui é o preenchimento ao redor do ícone. Se você estiview criando um ícone de estrela personalizado, certifique-se de deixair algum espaço de preenchimento entre a estrela e o limite da página em que ele se encontra.

    Se você não tem certeza de como fazer isso, experimente o Android Asset Studio . Você pode view algo como "Almofada em torno de Ícone Óptico", não o deixe mergulhair.

    Apenas 2 almofadas de pixel na image stair no photoshop. O preenchimento no xml não funciona, apenas preencha a image da estrela no photoshop. Está funcionando muito bem.

    Eu repairei o meu mesmo problema ao reduzir "layout_height" uma vez que a altura da minha image era menor do que a altura que eu tinha no layout_height.

    Mesmo problema. No meu caso Coloque imagens de estrelas personalizadas na pasta / desenho e defina "android:layout_height="30dip"

    trabalhe bem !!

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