2016-04-05 32 views
7

La mia app al momento appare come di seguito. Tre Button s in un RelativeLayout, il pulsante centrale ha margine negativo sinistro e destro per sovrapporre gli altri due pulsanti.Non portare il pulsante in primo piano con il clic

: Quando faccio clic sul pulsante sinistro o destro, per un secondo viene visualizzato il primo piano e si sovrappone al pulsante centrale, che sembra molto brutto.

enter image description here

enter image description here

<RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal"> 

     <Button 
      android:id="@+id/voices" 
      android:layout_width="160dp" 
      android:layout_height="wrap_content" 

      android:layout_gravity="center_vertical" 

      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:onClick="clickVoices" 
      android:background="#333" 
      android:textColor="#fff" 
      android:text="@string/main_voices" /> 

     <Button 
      android:id="@+id/chat" 
      android:layout_width="160dp" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 

      android:onClick="clickChat" 
      android:background="#333" 
      android:textColor="#fff" 
      android:text="@string/main_chat" /> 

     <Button 
      android:id="@+id/record" 
      android:layout_width="60dp" 
      android:layout_height="100dp" 

      android:clickable="true" 
      android:onClick="clickRecord" 
      android:scaleType="centerInside" 
      android:src="@drawable/record" 
      android:text="Record" 
      android:layout_toRightOf="@+id/voices" 
      android:layout_toLeftOf="@+id/chat" 
      android:layout_marginLeft="-20dp" 
      android:layout_marginRight="-20dp" 
      android:layout_marginTop="-30dp" 
      android:background="@drawable/round_button" 

      android:paddingTop="30dp" 
      android:layout_marginBottom="10dp" /> 
    </RelativeLayout> 
+0

Ha risposto solo ieri. Possibile Dup? https://stackoverflow.com/questions/36392715/overlapping-buttons-prevent-button-from-raising-on-touch/36414403#36414403. Indipendentemente da ciò, la risposta che ho postato funziona. – CaptJak

+0

Hmmmm. La tua domanda è migliore di quella che ho linkato sopra e per [questo post] (https://meta.stackexchange.com/questions/147643/should-i-vote-to-close-a-duplicate-question-even- anche se-è-molto-più-nuovo-e-ha/147651 # 147651), l'altro dovrebbe essere contrassegnato come dupe. Ma non so cosa fare con la mia risposta. [Sono andato a Meta per una guida] (https://meta.stackoverflow.com/questions/320470/should-i-move-my-answer-to-a-new-duplicate). – CaptJak

+0

Che dire di spostare il 'recordButton' dal RelativeLayout ... o mettere gli altri due pulsanti in un LinearLayout allora' recordButton' può fluttuare in alto naturalmente. – sakiM

risposta

1

Il pulsante di default ha animazioni che vengono eseguiti quando viene toccato e utilizza un StateListAnimator per fare questo. Le animazioni eseguite, che elevano il pulsante, vengono chiamate al tocco e modificano le proprietà della vista android:elevation e (Google ref).

Per impedire l'animazione, è sufficiente interrompere l'esecuzione di animazioni su questa vista. Uso:

android:stateListAnimator="@null"

0

Utilizzare un FrameLayout. Tutti gli oggetti che hai inserito sono impilati uno sopra l'altro.

Oppure provate:

Mettere la vista immagine sopra (sulla parte superiore - primo figlio del genitore) il layout nel file XML in questo modo l'immagine sarà dietro il layout.

Non dovrebbe importare che si sta utilizzando un pulsante, dovrebbe essere lo stesso. Spero che aiuti.

ho ricevuto queste informazioni da questo link

EDIT:

Questo è come sembra quando prendo il codice e convertirlo in un layout di cornice forse im manca qualcosa perché i cant lanciarlo su un emulatore

Example of framelayout

+0

Ehi, l'ho pensato anch'io, ma non ho idea di come realizzarlo con un FrameLayout in un modo che sembra esattamente come sopra. – poitroae

+0

@poitroae Ho creato rapidamente lo stesso layout e POSSO farlo sembrare così, ma non ho tutti i file res necessari, puoi provare ad eliminare questo layout e crearne uno nuovo? - Sto modificando il mio proprietario per mostrarti la mia vista - – Robbert

+0

@poitroae btw hai provato a spostare il codice dal pulsante di registrazione sopra gli altri pulsanti? Ho letto da qualche parte che a volte aiuta anche. Sono nuovo ad Android me stesso quindi non ho più conoscenza di questo :) – Robbert

Problemi correlati