Eu tenho um LinearLayout
que eu estilo para se parecer com um button
e contém alguns elementos text / ImageView. Eu gostaria de fazer todo o LinearLayout
ato como um button
, em particular para dar-lhe estados que são definidos em um para que tenha um fundo diferente quando for pressionado.
Existe uma maneira melhor do que ImageButton
dimensionar todo o layout e posicionar de forma absoluta?
android
android-layout
Jason Prado
fonte
fonte
LinearLayout
comoToggleButton
Respostas:
Corri para este problema agora. Você terá que definir o LinearLayout para clicável. Você pode fazer isso no XML com
Ou em código com
Felicidades!
fonte
android:clickable="false"
-lo para evitar que bloqueie eventos de clique.Se você deseja adicionar o comportamento de segundo plano padrão do Android para fazer com que um
Layout
aja como um "clicável"View
, defina no destinoLayout
:API 11+ (Android puro):
API 7 (Android + AppCompat Support Library):
Qualquer API:
As respostas acima ainda são verdadeiras, mas não me ajudaram por apenas adicionar o estado padrão da IU pressionada e liberada (como em um
ListView
por exemplo).fonte
Usei a primeira e a segunda resposta. Mas meu linearlayout tem imagens e texto com cor de fundo, então eu tive que mudar "background" para "foreground"
layout linear
fonte
Primeiro você vai querer um seletor para definir os diferentes estados. Por exemplo, em um arquivo XML:
Eu não tentei, mas você pode definir android: background do LinearLayout para este seletor e definir android: clickable como true e funcionará.
Caso contrário, você poderia mudar para o uso de RelativeLayout e tornar o primeiro elemento um botão com este seletor como plano de fundo e fill_parent para a largura e altura do layout. Nesse caso, basta usar um botão normal e definir android: background para o seu seletor. Você não precisa colocar texto em seu botão.
fonte
Button
. Você pode substituironDraw(Canvas)
para fazer qualquer coisa especial que você precisa (ou seja, desenhar imagens ou texto dentro do botão).No aplicativo que estou trabalhando, preciso criar um LinearLayout dinamicamente. Neste caso, o comando
não está funcionando como deveria. Embora eu possa perder algo, consegui explorar setOnTouchListener para obter o mesmo resultado e envio o código caso alguém tenha as mesmas necessidades.
O código a seguir cria um LinearLayout com duas textviews e cantos arredondados, mudando de cor quando pressionado.
Primeiro, crie dois arquivos xml na pasta drawable, um para normal e outro para o estado linearlayout pressionado.
Xml de estado normal (drawable / rounded_edges_normal.xml)
Xml de estado pressionado (drawable / rounded_edges_pressed.xml). A única diferença está na cor ...
Em seguida, o código a seguir faz o trabalho
Variável global:
Em
onCreate()
:fonte
Basta definir esses atributos
fonte
Basta adicionar background attr / selectableItemBackground ao layout linear e também tornar esse linearlayout clicável
exemplo:
Isso faz com que o linearlayout atue como um botão quando pressionado. :)
fonte
Isso foi útil, mas se você quiser colocar uma cor de fundo e tornar o layout linear clicável como o item da lista. Defina o plano de fundo com sua cor preferida e defina a cor de primeiro plano como? Android: attr / selectableItemBackground, defina focalizável verdadeiro e clicável verdadeiro
Código de amostra
fonte
Aswers anteriores foram sobre como definir o plano de fundo padrão no arquivo xml. Aqui a mesma coisa no código:
fonte