2012-09-23 187 views
1

這必須是一個非常簡單的修復,但我似乎無法弄清楚。我有我的程序更改背景顏色以更改onClick,並使用onTouch更改ACTION_DOWNACTION_UP。但我需要它來改變顏色,當觸摸屏幕,並進出TextView。我需要它的功能像一個mouseOver/mouseOut事件。有沒有辦法在Android上做到這一點?或者我堅持onTouch,其中的行動必須從TextView內開始?如何在觸摸視圖和觸摸視圖時更改TextView背景顏色?

現在我在TextView本身設置onTouchListener。我應該把它放在別的地方,然後檢查x和y是否在Textview之內?還是有另一個事件監聽器,我應該使用?我是Android的新手,任何幫助將不勝感激。謝謝。

邁克

回答

2

我會實現對應用程序的OnTouchListener,然後在onTouch方法,繼續檢查,如果觸摸事件的當前位置是的邊界視圖框的範圍內。如果是,則應用新的背景,如果不適用原始背景。

由於各方面的意見落實setBackgroundColor我沒有做任何鑄造TextView但例子就足夠了,至少作爲一個起點,進一步開發應用程序。

這個完整的代碼如下:

public class Main extends Activity implements OnTouchListener{ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     //Set the listener for the parent/container view 
     findViewById(R.id.cont).setOnTouchListener(this); 

     //Get a hold of the view and create the Rect for the bounds 
     View target = findViewById(R.id.target); 
     Rect b = new Rect(); 

     //Get the bounding box of the target view into `b` 
     target.getGlobalVisibleRect(b); 
    } 

    public boolean onTouch(View v, MotionEvent event) { 

     //Check if it's within the bounds or not 
     if(b.contains((int)event.getRawX(),(int) event.getRawY())){ 
      target.setBackgroundColor(0xffff0000); 
     }else{ 
      target.setBackgroundColor(0xff000000); 
     } 

     //You need to return true to keep on checking the event 
     return true; 
    } 
} 

至於所述用戶接口爲前面的代碼,它只是一個ID cont並用的圖(在你的情況下的TextView)的線性佈局ID target。其餘的完全是默認的,所以我在這裏粘貼它沒有意義。 注意我只在一個模擬器上測試它,當在真實設備上嘗試它時,但是據我所知,它應該沒問題。


相關文章:

+0

或許應該申報'onCreate'方法外'B'。只是說。 –

+0

什麼是t,你在哪裏申報?它應該是一個正確的權利?! – Secko

+0

它應該是'b'抱歉,更新 –