Sunday 2 July 2017

Android Expandablelistview Group Indicator Forex


Ocultando o indicador do grupo para grupos vazios Outro tópico que continua retornando neste blog é a exibição de lista expansível. Parece que essas listas expansíveis problemáticas sempre têm algumas surpresas na loja. Desta vez, encontrei a questão dos indicadores do grupo e dos grupos vazios. Os indicadores de grupo são aquelas pequenas setas na frente das linhas do grupo que indicam, se o grupo está expandido ou colapsado. O problema é que esses indicadores estão sempre visíveis, mesmo que o grupo esteja vazio. Isso engana usuários que pensam que podem expandir o grupo. O grupo, de fato, se expande, mas como está vazio, não aparecem linhas de criança que podem ser extremamente irritantes. Algumas fontes da internet propõem magia com a variável desenhável que faz o teste do indicador do grupo. Se você seguir o conselho, o indicador do grupo desaparecerá para todos os grupos colapsados ​​(mesmo para aqueles que têm linhas secundárias). Esse comportamento surpreendente é por design. O comentário na fonte do ExpandableListView diz: se o grupo estiver desmoronado, então o consideramos vazio por motivos de desempenho. O método em que esse comportamento está conectado é privado, não é possível sobrecarregá-lo subclassando o ExpandableListView. Felizmente, a solução é muito simples, mesmo que seja um pouco complicada. Desativaremos completamente a lógica do indicador de grupo em ExpandableListView e forneceremos o nosso próprio indicador a partir do adaptador de backup da lista expansível. O indicador de grupo é desativado configurando-o para uma cor transparente em main. xml. Em seguida, substituimos getGroupView no adaptador (desta vez era um SimpleExpandableListAdapter, mas o método funciona para qualquer adaptador). Tivemos que adicionar manualmente um ImageView ao layout do grupo - isso normalmente é feito automaticamente por ExpandableListView, mas acabamos de desabilitar essa funcionalidade. Uma vez que getGroupView retorna a linha do grupo, post-manipulamos o ImageView que atua como um indicador de grupo considerando a contagem de filhos para o grupo ao lado de seu estado expandido. Isso, desafortunadamente, significa que você precisa ter ícones personalizados expandidos em seu programa - esses ícones são extremamente feios no programa de exemplo, deixo-o como uma lição de casa para embelezá-los. 16 comentários: I39m um líder da comunidade em uma rede de sites de desenvolvedores. Eu realmente gostei do conteúdo do seu blog e pensei que você poderia estar interessado em alguma exposição extra em nossos sites. Envie-me um e-mail para o ross no dzone dot com e posso explicar todos os detalhes. Ei, você pode me ajudar. Não consigo ver o indicador do grupo em nenhuma lista expansível. O que o ácaro seria o problema. Sobre a resposta StrayPointers e o código do blog, você pode simplificar ainda mais o código: no seu xml, adicione o seguinte a ExpansívelLista: Em seguida, no Adaptador, faça o seguinte: Ao usar o método setImageResource você Faça tudo com um one-liner. Você não precisa das três matrizes Inteiras em seu adaptador. Você também não precisa de um seletor XML para o estado expandido e colapsado. Tudo é feito via Java. Além disso, essa abordagem também exibe o indicador correto quando um grupo é expandido por padrão o que não funciona com o código do blog. Respondeu 10 de julho 12 às 15:29 onde posso aplicar este código ndash Karthik 26 de setembro às 6:28 Isso deve ser usado no método getGroupView () da sua implementação BaseExpandableListAdapter. Dê uma olhada nesta implementação do exemplo. Ndash jenzz 26 de setembro 13 às 11:34 1 para sua resposta Jeans eu já passei por esse link thnx. Ndash Karthik 28 de setembro 13 às 1:47 jenzz Qual é o quotindicatorquot ndash IBunny 24 de janeiro 14 às 6:44 jenzz onde é uma variável mágica quotindicatorquot ndash Joseph 17 de abril 14 às 17:01 Como mencionado em uma resposta diferente, uma vez que o Android trata uma Grupo de lista não expandido como vazio, o ícone não é desenhado, mesmo que o grupo tenha filhos. Basicamente, você deve definir o padrão drawable como transparente, mover o drawable em sua exibição de grupo como um ImageView e alternar a imagem em seu adaptador. Simplesmente, você cria um novo layout xml com height0 para o cabeçalho de grupo oculto. Por exemplo, seu grouplistitemempty. xml Então, seu layout de cabeçalho de grupo normal é yourgrouplistitemfile. xml Finalmente, você atualiza o método getGroupView na sua Classe de Adaptador: IMPORTANTE. A tag de raiz dos arquivos de layout (oculto e normal) deve ser diferente (como exemplo acima, LinearLayout e RelativeLayout) Ocultando o indicador de grupo para grupos vazios Outro tópico que continua retornando neste blog é a exibição de lista expansível. Parece que essas listas expansíveis problemáticas sempre têm algumas surpresas na loja. Desta vez, encontrei a questão dos indicadores do grupo e dos grupos vazios. Os indicadores de grupo são aquelas pequenas setas na frente das linhas do grupo que indicam, se o grupo está expandido ou colapsado. O problema é que esses indicadores estão sempre visíveis, mesmo que o grupo esteja vazio. Isso engana usuários que pensam que podem expandir o grupo. O grupo, de fato, se expande, mas como está vazio, não aparecem linhas de criança que podem ser extremamente irritantes. Algumas fontes da internet propõem magia com a variável drawable que faz o teste do indicador do grupo. Se você seguir o conselho, o indicador do grupo desaparecerá para todos os grupos colapsados ​​(mesmo para aqueles que têm linhas secundárias). Este comportamento surpreendente é por design. O comentário na fonte do ExpandableListView diz: se o grupo estiver desmoronado, então o consideramos vazio por motivos de desempenho. O método em que esse comportamento está conectado é privado, não é possível sobrecarregá-lo subclassando o ExpandableListView. Felizmente, a solução é muito simples, mesmo que seja um pouco complicada. Desativaremos completamente a lógica do indicador de grupo em ExpandableListView e forneceremos o nosso próprio indicador a partir do adaptador de backup da lista expansível. O indicador de grupo é desativado configurando-o para uma cor transparente em main. xml. Em seguida, substituimos getGroupView no adaptador (desta vez era um SimpleExpandableListAdapter, mas o método funciona para qualquer adaptador). Tivemos que adicionar manualmente um ImageView ao layout do grupo - isso normalmente é feito automaticamente por ExpandableListView, mas acabamos de desabilitar essa funcionalidade. Uma vez que getGroupView retorna a linha do grupo, post-manipulamos o ImageView que atua como um indicador de grupo considerando a contagem de filhos para o grupo ao lado de seu estado expandido. Isso, desafortunadamente, significa que você precisa ter ícones personalizados expandidos em seu programa - esses ícones são extremamente feios no programa de exemplo, deixo-o como uma lição de casa para embelezá-los. 16 comentários: I39m um líder da comunidade em uma rede de sites de desenvolvedores. Eu realmente gostei do conteúdo do seu blog e pensei que você poderia estar interessado em alguma exposição extra em nossos sites. Envie-me um e-mail para o ross no dzone dot com e posso explicar todos os detalhes. Ei, você pode me ajudar. Não consigo ver o indicador do grupo em nenhuma lista expansível. Que ácaro seria o problema. Digging mais profundo em ExpandableListView Eu encontrei outro problema estranho de design da API. Esta é sobre as imagens do indicador do grupo ExpandableListView. Essas imagens são exibidas no lado esquerdo de uma linha de grupo na lista. Como o nome sugere, eles indicam se o grupo está expandido ou colapsado. Obviamente, pode haver duas imagens diferentes aqui e o Android o suporta. Você pode escrever um seletor XML drawable (setGroupIndicator (Drawable groupIndicator)) com dois estados: stateempty for collapsed e stateexpanded para um grupo expandido. Bem, o que também é óbvio para mim é o fato de que duas imagens podem ter dois tamanhos diferentes, certo. Aparentemente, não é tão óbvio para pessoas que criaram essa parte da API Android. Você pode ter duas imagens diferentes para dois estados de grupo diferentes, mas8230 ambas as imagens serão esticadas para se adequar ao tamanho que você definiu pelo método InstallIndicatorBounds (int left, int right) do ExpandableListView 8216s. Quais as opções que você possui Você pode definir os limites do indicador (via setIndicatorBounds (int left, int right)) para corresponder uma mais ampla de suas duas imagens e compensar as diferenças usando este tipo de seletor: no exemplo acima, a imagem expandida é mais ampla, Então compensamos 20dp no Android: coordenada direita da imagem recolhida. Como você pode ver, também há algumas margens de amostra superior e inferior para ambas as imagens. A segunda opção é converter suas imagens em um ponto de 9 parches, selecionando cuidadosamente partes esticáveis ​​e não esticáveis. No que diz respeito à edição de imagens à mão, considero essa solução impraticável. Você também pode definir seu indicador como nulo em itens de seleção e colocar suas visualizações de indicadores dentro de layouts de linhas XML. Você terá que escrever um CustomizableListAdapter personalizado e visualizações do indicador displayhide depois de inflar esses de seu layout de linha na implementação getGroupView. Eu ainda não testei isso, mas isso parece ser a melhor solução. Descarte esta característica inútil dos indicadores de grupo e faça o seu caminho.

No comments:

Post a Comment