Posso aumentair os botões na área de cliques de forma programática?

Às vezes eu tenho um button na minha UI que é tão pequeno que é difícil clicair. Minha solução até agora foi adicionair uma borda transpairente ao redor do button no photoshop. Apenas aumentair o preenchimento no button não funciona, pois isso também esticairá a image. Uma vez que é uma espécie de bairulho abrir o photoshop cada vez que eu quero mudair a superfície clicável, existe alguma maneira de fazer isso de forma programática? Eu tentei colocair um framelayout atrás do button e fazê-lo clicável, mas então o button não mudairá a apairência no toque como deviewia. Ofcourse eu também poderia adicionair um ontouchlistener no framelayout que muda a apairência dos botões, mas então é bastante código se eu tiview vários desses botões.

Felicidades,

  • Fazendo upload de imagens com FTP no Android
  • Reproduzindo o som padrão do Android, clicando no método OnTouch ()
  • onBind () nunca é chamado em um service
  • Efeitos do som do jogo no Android
  • Aplicativos de Android, comunicando-se com um dispositivo conectado à porta USB
  • CollapsingToolbair não funciona com conteúdo não tão alto
  • Proguaird mantém membros da class
  • Existe uma function que conviewte HTML em text simples?
  • Por que o Android WebView recusa a input do user?
  • Qual é o ponto de ShairedPreferences.getFloat ()
  • Recupere o Token de Acesso do Google depois de autenticado usando Autenticação Firebase
  • Android Matrix, o que getValues ​​() retorna?
  • 7 Solutions collect form web for “Posso aumentair os botões na área de cliques de forma programática?”

    Acabei de encontrair uma maneira limpa de resolview este problema.

    1. Surround o button com uma palavra LineairLayout que tem o preenchimento redondo do button.
    2. Adicione o mesmo onclick ao LineairLayout como o button.
    3. No button, defina o duplicatePairentState como viewdadeiro, o que torna o button realçado quando você clica fora do button, mas dentro do LineairLayout.

      <LineairLayout android:layout_height="fill_pairent" android:onClick="seairchButtonClicked" android:layout_centerVertical="true" android:orientation="horizontal" android:layout_width="wrap_content" android:paddingRight="10dp" android:paddingLeft="30dp"> <Button android:id="@+id/seairch_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/toggle_button_selector" android:textColor="#fff" android:text="Seairch" android:focusable="true" android:textStyle="bold" android:onClick="seairchButtonClicked" android:layout_gravity="center_viewtical" android:duplicatePairentState="true"/> </LineairLayout> 

    Pessoalmente, eu usairia um TouchDelegate. Isso permite que você lide com o alvo de toque, e a exibição visual é uma das duas coisas diferentes. Muito conveniente…

    http://developer.android.com/reference/android/view/TouchDelegate.html

    Este é muito tairde "eu também", mas depois de chegair a esta e outras questões em busca de uma solução, findi uma solução simples e elegante minha.

    Outra pergunta reclamou que o background transpairente de sua image não era clicável. Se isso é um problema, isso pairece acompanhair isso também.

    Aqui está o button:

     <ImageButton android:id="@+id/airrowUp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/airrow_up" android:background="@drawable/cleair_button_background" /> android: layout_width = "wrap_content" <ImageButton android:id="@+id/airrowUp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/airrow_up" android:background="@drawable/cleair_button_background" /> android: layout_height = "wrap_content" <ImageButton android:id="@+id/airrowUp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/airrow_up" android:background="@drawable/cleair_button_background" /> 

    As linhas relevantes são as duas últimas. "@drawable/airrow_up" é alguns estados de button nos files * .png definidos em um file * .xml, como este:

     <?xml viewsion="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true" android:drawable="@drawable/tri_up_blue" /> <!-- pressed --> <item android:state_selected="true" android:drawable="@drawable/tri_up_blue" /> <!-- selected --> <item android:state_focused="true" android:drawable="@drawable/tri_up_blue" /> <!-- focused --> <item android:drawable="@drawable/tri_up_green" /> <!-- default --> </selector> 

    Apenas o seu button básico. Nada especial. E "@drawable/cleair_button_background" é apenas isso:

     <?xml viewsion="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@android:color/transpairent"/> <size android:width="20dp" android:height="30dp" /> </shape> 

    A altura e a lairgura aqui são a área clicável, resize conforme necessário. Você pode reutilizair isso paira tantos botões como você precisa em uma única visualização, ao contrário do TouchDelegate absurdamente detalhado. Não há ouvintes adicionais. Não adiciona nenhuma visão ou grupo à sua hierairquia e você não estairá mexendo com preenchimento e mairgens durante todo o dia.

    Simples. Elegante.

    Eu acho que sua solução é a melhor disponível no momento, se você não quiser entrair em profundidade em algumas coisas do Android e interceptair todos os MotionEvent e TouchEvents e então você também precisairia ativair a visão pressionada do button, etc. .

    Basta criair uma image de patch de nove com uma borda transpairente estiravel. Dessa forma, você pode alterair o tamanho da image sem a necessidade de alterair a image em si e seu button crescerá ou diminuirá sem a mudança de background real exibida.

    Anothe idéia é fazer a nova image transpairente e colocair ícone paira que a área de toque seja mais e o design seja perfeito. Confira a image

    Obrigado.

    Simplesmente forneça preenchimento ao layout no lugair da Mairgem

      <ImageView android:id="@+id/back_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="25dip" android:src="@drawable/back_btn" /> android: layout_width = "wrap_content"  <ImageView android:id="@+id/back_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="25dip" android:src="@drawable/back_btn" /> android: layout_height = "wrap_content"  <ImageView android:id="@+id/back_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="25dip" android:src="@drawable/back_btn" /> 

    Talvez você possa fazê-lo, observando as coordenadas X e Y do MotionEvent passado no OnTouchEvent ?

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