2012-04-04 100 views
6

我一直在下面解釋如何使用背景與不同狀態的按鈕,但它似乎並沒有工作教程:S按下按鈕,機器人狀態

這裏是我的代碼:

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

</selector> 

這是我一直放在我的繪製文件夾中的XML代碼,這裏是活動的XML的一部分,使用這些按鈕:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/backgrounddd" 
    android:orientation="vertical" > 

      <Button 
       android:id="@+id/bNoteRemind" 
       android:layout_width="100dp" 
       android:layout_height="100dp" 
       android:layout_gravity="center" 
       android:background="@drawable/imagebutton1" /> 
    ... 

這裏是java類:

public class MenuPrincipal extends Activity { 

    Button NoteRemind;   

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 

     //on lui associe le layout menuprincipal.xml 
     setContentView(R.layout.menuprincipal); 

     NoteRemind = (Button) findViewById(R.id.bNoteRemind);  

     // Si on choisit de rédiger une nouvelle task on va être rediriger sur l'activité NoteReminder 

     NoteRemind.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       //On créé l'Intent qui va nous permettre d'afficher l'autre Activity 
       //Mettez le nom de l'Activity dans la quelle vous êtes actuellement pour le premier parametre 
       v.setPressed(true); 

       Intent intent = new Intent(MenuPrincipal.this, NoteReminder.class); 
       //Intent intent = new Intent(MenuPrincipal.this, Teste2.class); 
       //On démarre l'autre Activity 
       startActivity(intent); 


      } 
     }); .... 

該按鈕顯示不錯,但是當我按下它時,它不顯示按下的圖像:s我不明白我在做什麼錯誤!

有沒有人在某處看到錯誤???


我應該在哪裏放這些行?我已經把它們放在我的按鈕XML

<Button 
     android:id="@+id/bNoteRemind" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_gravity="center" 
     android:background="@drawable/imagebutton1" 
     android:focusable="true" 
     android:focusableInTouchMode="true" /> 

但現在我的按鈕背景改爲擠壓的圖像沒有我按下它:對,它不會改變

+2

嘗試'機器人:可調焦= 「真」'和'機器人:focusableInTouchMode = TRUE; – 2012-04-04 21:26:12

+0

[http://stackoverflow.com/questions/11978880 /如何對改變顏色的最肘節按鈕] [1] 請參閱本請 [1]:http://stackoverflow.com/問題/ 1 1978880 /如何改變顏色的切換按鈕 – haris 2013-12-14 09:45:51

回答

18

是在Button你已經顯示的唯一的事情在你的Activity?如果是這樣,那麼當窗口加載時,它將關注(觸發selector中的第三項),並且您將無法離開它。如果只想按下時更改,請刪除第三行。當你在它的時候,刪除第一行,因爲當窗口沒有被聚焦時,按鈕永遠不會被按下。

其實,我建議這樣的代碼:

設置按鈕後
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/boutonnpousse" android:state_pressed="true"/> 
    <item android:drawable="@drawable/boutonn"/> 
</selector> 
+0

如何在按下時更改動畫速度? – wutzebaer 2016-01-07 12:27:53