Android 台灣中文網

標題: Textview的3種事件 [打印本頁]

作者: 暗桌之光    時間: 2011-10-5 18:02
標題: Textview的3種事件
  1. TextView tv_title = new TextView(this);
  2. tv_title.setClickable(true); //單擊事件
  3. tv_title.setFocusable(true); //獲取焦點事件
  4. tv_title.setFocusableInTouchMode(true); //觸摸事件
複製代碼
  1. //單擊處理 tv_title.setOnClickListener(new OnClickListener()
  2. { public void onClick(View v) { } });
複製代碼
  1. //獲取焦點事件 (觸摸)
  2. tv_title.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { TextView tv_current_title = (TextView) v; // TODO Auto-generated method stub if (hasFocus == true) { //do something } else { //do something } } });
複製代碼

作者: ploglin    時間: 2011-10-5 20:27
本帖最後由 ploglin 於 2011-10-6 08:56 編輯

一般來說,我都會把所有物件的 setOnClickListener 設到同一個 method
public void onClick(View v) 的 function中,利用 v.getId() 來識別不同的物件,做不同的處理。
小小的分享
作者: guoty    時間: 2011-10-6 08:33
請問樓上先進,如何實現,能否展示完整例子?
先謝謝了!!!
新手上路請多指教
作者: ploglin    時間: 2011-10-6 08:52
下面是比較完整的代碼,如果認為有問題的話,大家可以給我點意見。

  1. public class MenuActivity extends Activity implements Runnable, OnClickListener {
  2.         /** Called when the activity is first created. */
  3.         private static final String TAG = MenuActivity.class.getSimpleName();
  4.         private final int HANDLER_OF_SUCCESS = 0;
  5.         private Button go_query;

  6.         @Override
  7.         public void onCreate(Bundle savedInstanceState) {
  8.                 super.onCreate(savedInstanceState);
  9.                 setContentView(R.layout.menu);

  10.                 go_query = (Button) findViewById(R.id.go_query);

  11.                 go_query.setOnClickListener(this);

  12.                 Thread thread = new Thread(this);
  13.                 thread.start();
  14.         }

  15.         public void run() {
  16.                 // TODO Auto-generated method stub
  17.                 sendMsg(HANDLER_OF_SUCCESS, new Bundle());
  18.         }

  19.         private void sendMsg(int flag, Bundle, bundle) {
  20.                 Message msg = new Message();
  21.                 msg.what = flag;
  22.                 msg.setData(bundle);
  23.                 handler.sendMessage(msg);
  24.         }

  25.         private Handler handler = new Handler() {
  26.                 @Override
  27.                 public void handleMessage(Message msg) {
  28.                         switch (msg.what) {
  29.                         case HANDLER_OF_SUCCESS:
  30.                                 break;
  31.                         }
  32.                 }
  33.         };

  34.         @Override
  35.         public void onClick(View v) {
  36.                 // TODO Auto-generated method stub
  37.                 switch (v.getId()) {
  38.                 case R.id.go_query:
  39.                         startActivity(new Intent().setClass(this, TextActivity.class));
  40.                         break;
  41.                 }
  42.         }

  43. }
複製代碼

作者: guoty    時間: 2011-10-6 09:52
太感激了,真的謝謝您。
這讓程式碼少了好多。
再次謝謝如此快速回覆!!!
作者: ploglin    時間: 2011-10-6 10:32
幫的上忙就好,有任何問題,大家都可以互相交流一下。




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1