2011-10-12 82 views
0

我正在構建Android平板電腦的應用程序框架,並且我遇到了一些ImageButton的奇怪問題。這些按鈕(Next & Prev)用於幫助瀏覽作爲框架一部分的「內容頁面」,並使用自定義背景可繪製。Android圖像按鈕表現奇怪

問題在於,無論何時點擊Prev按鈕,Next按鈕都會突出顯示,而Prev按鈕不會。起初我以爲這是一個簡單的鏈接或@ + id /問題,但執行Prev按鈕的操作,而不是Next按鈕。

下面是一些相關的代碼:

在onCreate()方法:

nextButton = (ImageButton) findViewById(R.id.nextButton); 
prevButton = (ImageButton) findViewById(R.id.prevButton); 
nextButton.setOnClickListener(this); 
prevButton.setOnClickListener(this); 

的onClick方法:

public void onClick(View v) { 
    if(_cpp == null){ 
     finish(); 
    }else if (v == nextButton) { 
     if (!_cpp.nextRes.equalsIgnoreCase("")) { 
      // load next page 
      _tempRes = _cpp.nextRes; 
      //start transition out animations 
      fadePageOut(); 
     } else { 
      finish(); 
     } 
    } else if (v == prevButton) { 
     if (!_cpp.prevRes.equalsIgnoreCase("")) { 
      // load previous page 
      _tempRes = _cpp.prevRes; 
      //start transition out animations 
      fadePageOut(); 
     } 
    } 
} 

我繪製的XML:

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

我一直在調試和現在尋找答案兩天,沒有運氣。有趣的是,它曾經工作得很好......但即使恢復到我的項目的先前版本似乎也沒有任何幫助。

有沒有人遇到過這個問題之前或有任何想法可能是什麼原因呢?

+0

是 「上一頁」 和「下一頁「按鈕使用相同的drawable(與旋轉)?這可能是問題 – SERPRO

+0

不,他們使用兩個單獨的drawable。 prev_button.xml和next_button.xml。這些在佈局XML文件中設置。 – MZGS

回答

0

解決!愚蠢的,愚蠢的我...

下一步按鈕顯示爲選中,因爲在我的代碼(部分未發佈)禁用在我的fadePageOut()方法(見發佈的代碼)期間的按鈕。狀態可繪製只是使用錯誤的圖像來啓用/禁用狀態。

此:

<item android:state_enabled="false" android:drawable="@drawable/prev_arrowhigh"/> 

本來應該是:

<item android:state_enabled="false" android:drawable="@drawable/prev_arrow"/> 

在兩天,因爲一個不正確的圖像的浪費...... *嘆*

+0

不要忘記標記您的答案爲正確.. :) – SERPRO

0

您可以嘗試的解決方案是在視圖上設置onClick屬性。該解決方案可能是這樣的:

onCreate方法:

public void nextButton(View v) 
{ 
    if(_cpp == null || _cpp.nextRes.equalsIgnoreCase("")) 
    { 
     finish(); 
     return; 
    } 

    // load next page 
    _tempRes = _cpp.nextRes; 
    //start transition out animations 
    fadePageOut(); 
} 

public void prevButton(View v) 
{ 
    if(_cpp == null) 
    { 
     finish(); 
     return; 
    } 

    if (!_cpp.prevRes.equalsIgnoreCase("")) 
    { 
     // load next page 
     _tempRes = _cpp.nextRes; 
     //start transition out animations 
     fadePageOut(); 
    } 
} 

,並添加: 安卓的onClick = 「Next按鈕」 機器人的活動

nextButton = (ImageButton) findViewById(R.id.nextButton); 
prevButton = (ImageButton) findViewById(R.id.prevButton); 

新方法:onClick =「prevButton」

將您的按鈕放在xml文件中

+0

作爲使用setOnClickListener()的替代方法,這不失爲一個解決方案(我嘗試過)。我的點擊事件似乎是由Android正確處理的,它只是改變了錯誤按鈕上的圖像。 無論如何。 – MZGS

+0

值得嘗試改變方法.. :)你是否嘗試刪除prev按鈕的樣式和drawable,以查看默認樣式是否仍然表現怪異? – SERPRO

+0

我只是嘗試使用Buttons而不是ImageButton w/background drawable,它工作的很好。你認爲這個問題可能是我的可繪製XML文件中的東西嗎? – MZGS