Boas.Estou a desenvolver uma aplicação para Android em que necessito de uma custom view (que já criei), baseada no Canvas (onDraw), mas tenho um problema que simplesmente não consigo resolver, mesmo após ter tentado diferentes abordagens.Ao mesmo tempo que consigo visualizar a minha custom view tenho que conseguir mostrar botões (Button) no ecrã.De momento estou a mostrar a custom view a partir da activity principal, ou seja, não está no layout xml.[code type=javascript] CustomView cv = new CustomView(this,getWindowManager().getDefaultDisplay()); setContentView(cv);[/code]A minha experiência com android não é muita, daí a solução poder ser até relativamente simples, mas já procurer n'outros sítios e nada do que encontrei resolveu este problema.Agradeço desde já qualquer ajuda.
CustomView + Layout
Iniciado por
takecare
, Nov 27 2010 19:22
3 respostas a este tópico
#1
Mensagem publicada 27 November 2010 - 19:22
#2
Mensagem publicada 28 November 2010 - 01:17
Viva,Tens mais do que uma maneira de resolver o teu problema. Uma delas é colocares a custom view num layout em xml.Mas o modo mais fácil é criares por exemplo um layout em xml com um RelativeLayout por exemplo, fazes setContentView do Layout (com setContentView(R.layout.nome_do_teu_layout) ) e depois apenas precisas de adicionar a tua customView ao RelativeLayout que crias-te no layout em xml.Simples hã :pSe precisares de ajuda ou tiveres dúvidas em algum dos passos diz.
#3
Mensagem publicada 28 November 2010 - 11:51
Tentei desta forma:[code type=xml] [/code]e o seguinte código no onCreate[code type=javascript] LinearLayout main = (LinearLayout) findViewById(R.id.main); setContentView(main); main.addView((VerticalBarView)findViewById(R.id.barview));[/code]o que resulta nun null pointer exception (http://pastebin.com/BjXYtZ1z)
#4
Mensagem publicada 29 November 2010 - 00:16
A ideia é criar o container no xml e a tua custom view no código.Por isso em vez de adicionares o VerticalBarView, adicionas a tua customView:CustomView cv = new CustomView(this,getWindowManager().getDefaultDisplay());main.addView(cv);