2013-04-16 4 views
0

В главном меню навигации есть четыре кнопки, все эти четыре кнопки содержат изображение. Я создал следующий XML-файл, чтобы иметь дело с анимацией событий нажмите:Использование одного и того же файла xml для нескольких кнопок

profile.xml

<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/profileicon" /> 
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/gradient" /> 
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/gradient" /> 
<item android:drawable="@drawable/profileicon" /> 

И следующий файл XML, чтобы установить эффект:

gradient.xml

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item> 
     <bitmap android:src="@drawable/profileicon" /> 
    </item> 
    <item> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android" > 
      <gradient 
       android:angle="90" 
       android:centerColor="#880d0d0f" 
       android:endColor="#885d5d5e" 
       android:startColor="#880f0f10" /> 
     </shape> 
    </item> 
</layer-list> 

Есть ли способ, которым я могу избежать создания нового файла pr. у меня есть?

Это то, что мой main_layout выглядит следующим образом:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/background" 
    tools:context=".Main" > 

    <Button 
     android:id="@+id/btn_yourPreferences" 
     android:layout_width="256dp" 
     android:layout_height="256dp" 
     android:layout_alignBottom="@+id/btn_signUp" 
     android:layout_alignParentRight="true" 
     android:layout_marginBottom="26dp" 
     android:layout_marginRight="275dp" 
     android:background="@drawable/profile" 
     android:onClick="onClickViewPreferences" /> 

    <Button 
     android:id="@+id/btn_yourCompetitions" 
     android:layout_width="256dp" 
     android:layout_height="256dp" 
     android:layout_above="@+id/btn_yourPreferences" 
     android:layout_marginBottom="54dp" 
     android:layout_marginRight="230dp" 
     android:layout_toLeftOf="@+id/btn_yourPreferences" 
     android:background="@drawable/signedicon" /> 

    <Button 
     android:id="@+id/btn_signUp" 
     android:layout_width="256dp" 
     android:layout_height="256dp" 
     android:layout_alignLeft="@+id/btn_yourCompetitions" 
     android:layout_alignParentBottom="true" 
     android:layout_marginBottom="36dp" 
     android:background="@drawable/yourcompeteicon" /> 

    <Button 
     android:id="@+id/btn_listCompetitions" 
     android:layout_width="256dp" 
     android:layout_height="256dp" 
     android:layout_alignBaseline="@+id/btn_yourCompetitions" 
     android:layout_alignBottom="@+id/btn_yourCompetitions" 
     android:layout_alignLeft="@+id/btn_yourPreferences" 
     android:background="@drawable/listicon" 
     android:onClick="onClickViewSearch" 
     /> 

</RelativeLayout> 
+0

Использование 'ImageButton' устанавливает весь фон' @ drawable/profile' и устанавливает src на ваши значки. – FoamyGuy

ответ

2

Выполните следующие действия. Я просто сделал некоторые незначительные изменения ваших кодов

profile.xml

<?xml version="1.0" encoding="utf-8"?>  
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/gradient" /> 
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/gradient" /> 

gradient.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" > 
    <gradient 
     android:angle="90" 
     android:centerColor="#880d0d0f" 
     android:endColor="#885d5d5e" 
     android:startColor="#880f0f10" /> 
</shape> 

main_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/background" 
tools:context=".Main" > 

<ImageButton 
    android:id="@+id/btn_yourPreferences" 
    android:layout_width="256dp" 
    android:layout_height="256dp" 
    android:layout_alignBottom="@+id/btn_signUp" 
    android:layout_alignParentRight="true" 
    android:layout_marginBottom="26dp" 
    android:layout_marginRight="275dp" 
    android:background="@drawable/profile" 
    android:background="@drawable/profileicon" 
    android:onClick="onClickViewPreferences" /> 

<ImageButton 
    android:id="@+id/btn_yourCompetitions" 
    android:layout_width="256dp" 
    android:layout_height="256dp" 
    android:layout_above="@+id/btn_yourPreferences" 
    android:layout_marginBottom="54dp" 
    android:layout_marginRight="230dp" 
    android:layout_toLeftOf="@+id/btn_yourPreferences" 
    android:background="@drawable/profile" 
    android:src="@drawable/signedicon" /> 

<ImageButton 
    android:id="@+id/btn_signUp" 
    android:layout_width="256dp" 
    android:layout_height="256dp" 
    android:layout_alignLeft="@+id/btn_yourCompetitions" 
    android:layout_alignParentBottom="true" 
    android:layout_marginBottom="36dp" 
    android:background="@drawable/profile" 
    android:src="@drawable/yourcompeteicon" /> 

<ImageButton 
    android:id="@+id/btn_listCompetitions" 
    android:layout_width="256dp" 
    android:layout_height="256dp" 
    android:layout_alignBaseline="@+id/btn_yourCompetitions" 
    android:layout_alignBottom="@+id/btn_yourCompetitions" 
    android:layout_alignLeft="@+id/btn_yourPreferences" 
    android:background="@drawable/profile" 
    android:src="@drawable/listicon" 
    android:onClick="onClickViewSearch" 
    /> 

Смежные вопросы