Estou realmente cansado de procurar uma solução para o Scrollview vertical e horizontal.
Eu li que não existem visualizações / layouts na estrutura que implementem esse recurso, mas preciso de algo como isto:
Eu preciso definir um layout dentro de outro, o layout filho deve implementar a rolagem vertical / horizontal para mover.
Inicialmente, implementei um código que movia o layout pixel por pixel, mas acho que não é o caminho certo. Eu tentei com ScrollView e Horizontal ScrollView, mas nada funciona como eu quero, porque implementa apenas a rolagem vertical ou horizontal.
A tela não é minha solução, pois preciso anexar ouvintes a elementos filho de alguém.
O que eu posso fazer?
android
scrollview
Kronos
fonte
fonte
Respostas:
Misturando algumas das sugestões acima, foi possível obter uma boa solução:
ScrollView personalizado:
HorizontalScrollView personalizado:
o ScrollableImageActivity:
o layout:
fonte
LinearLayout
palpite I)Como esse parece ser o primeiro resultado de pesquisa no Google para "Android Vertical + ScrollView horizontal", pensei em adicionar isso aqui. Matt Clark construiu uma exibição personalizada com base na fonte do Android e parece funcionar perfeitamente: Two Dimensional ScrollView
Lembre-se de que a classe nessa página possui um erro que calcula a largura horizontal da visualização. Uma correção de Manuel Hilty está nos comentários:
Edit: O link não funciona mais, mas aqui está um link para uma versão antiga do post do blog .
fonte
fillViewport
eonMeasure
exatamente como a fonte ScrollView (v2.1). Também mudei os dois primeiros construtores com:this( context, null );
ethis(context, attrs, R.attr.scrollViewStyle);
. Com isso, eu posso usar a barra de rolagem usandosetVerticalScrollBarEnabled
esetHorizontalScrollBarEnabled
no código.Encontrei uma solução melhor.
XML: (design.xml)
Código Java:
Isso funciona !!!
Se você deseja carregar outro layout ou controle, a estrutura é a mesma.
fonte
Eu uso e funciona bem:
O link da fonte está aqui: Android-spa
fonte
ImageView
conteúdo rolável, ela pode ou não funcionar para outros conteúdos arbitrários e que o Google acredita que haverá problemas com sua abordagem. A opinião do Google também é importante em relação ao desenvolvimento futuro - eles podem não estar tentando garantir que sua abordagem funcione a longo prazo, se estiverem aconselhando as pessoas a não usá-la em primeiro lugar.Minha solução baseada na resposta de Mahdi Hijazi , mas sem visualizações personalizadas:
Layout:
Código (onCreate / onCreateView):
Você pode alterar a ordem das visualizações de rolagem. Basta alterar a ordem no layout e no código. E, obviamente, em vez de WateverViewYouWant, você coloca o layout / vistas que deseja rolar nas duas direções.
fonte
Opção 1: você pode criar um novo design de interface do usuário que não exija rolagem horizontal e vertical simultânea.
Opção 2: você pode obter o código-fonte
ScrollView
eHorizontalScrollView
aprender como a equipe principal do Android os implementou e criar sua própriaBiDirectionalScrollView
implementação.Opção nº 3: você pode se livrar das dependências que exigem o uso do sistema de widgets e desenhar diretamente no Canvas.
Opção nº 4: se você se deparar com um aplicativo de código aberto que parece implementar o que você procura, veja como eles o fizeram.
fonte
Tente isto
fonte
como o link Two Dimensional Scrollview está inoperante, não consegui obtê-lo, então criei meu próprio componente. Ele lida com arremessar e funciona corretamente para mim. A única restrição é que wrap_content pode não funcionar corretamente para esse componente.
https://gist.github.com/androidseb/9902093
fonte
Eu tenho uma solução para o seu problema. Você pode verificar o código ScrollView, que trata apenas da rolagem vertical, ignora a horizontal e modifica-a. Eu queria uma visualização como uma webview, então modifiquei o ScrollView e funcionou bem para mim. Mas isso pode não atender às suas necessidades.
Deixe-me saber que tipo de interface do usuário você está segmentando.
Saudações,
Ravi Pandit
fonte
Jogando com o código, você pode colocar um HorizontalScrollView em um ScrollView. Dessa forma, você pode ter o método de duas rolagens na mesma exibição.
Fonte: http://androiddevblog.blogspot.com/2009/12/creating-two-dimensions-scroll-view.html
Espero que isso possa ajudá-lo.
fonte
use desta maneira eu tentei isso eu consertei
Coloque todo o seu layout XML dentro
Expliquei isso neste link: vertical recyclerView e Horizontal recyclerview rolando juntos
fonte