2011-07-08 31 views
2

如何在Android 2.2上實現選擇文本功能?我搜索了Google,但找不到解決方案。在TextView上選擇文本(android 2.2)

+0

您能更具體地瞭解您正在使用哪些視圖以及您想要做什麼? – Codeman

+1

正如我在標題中所述,在TextView中選擇文本。你知道在記事本中選擇文本嗎?這是這樣的。拖動鼠標以選擇文本。 – Emerald214

+0

您使用的是什麼Android API級別?一些API支持文本選擇,有些則不支持。這也可以在UI中實現,例如HTC Sense。我不知道爲此編寫自己的方法將是微不足道的。 – Codeman

回答

2

這是我發現(從谷歌)支持它的Android 1.6+的唯一途徑,它的工作原理,但它不是理想的,我認爲在股票的Android你不能按住一個Web視圖,以突出顯示,直到V2。 3,但我可能是錯了..

通過這是網頁視圖的方式,它也可能會在TextView的工作,但我還沒有嘗試過

(注:這是目前我什麼應用程序運正在使用,所以它可以與我所測試過的所有手機一起使用,但是我發現這個問題的唯一原因是因爲我正在尋找並希望有人現在想出了一個更好的方法)

我剛剛拿到了所謂的「選擇文本」,它調用函數「selectnCopy()」菜單項

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    //.. 
    switch (item.getItemId()) { 
     case R.id.menu_select: 
      selectnCopy(); 
      return true; 
    //.. 
    } 
} 

,看起來像這樣:

public void selectnCopy() { 
    Toast.makeText(WebClass.this,getString(R.string.select_help),Toast.LENGTH_SHORT).show(); 
    try { 
     KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, 
       KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0); 
     shiftPressEvent.dispatch(wv); 
    } catch (Exception e) { 
     throw new AssertionError(e); 
    } 
} 

通知我已經把select_help串有祝酒,這只是因爲它不是立即清除用戶它是如何工作的

<string name="select_help">Touch and drag to copy text.</string> 
+0

完美!但我不喜歡在選擇文本後顯示「文本複製到剪貼板」的消息。任何想法改變或刪除它? – Emerald214

+2

不幸的是,我不相信有一種方法可以用這種方法去除烤麪包 – tabjsina

1

您是否將文字設置爲可選?像這樣:

android:textIsSelectable="false" //OR true 

請參閱Documentation作進一步參考。

+0

「error:No resource identifier found for attribute' textIsSelectable'包'android'中。 Eclipse中TextView的Properties視圖沒有這個屬性。 : - ? – Emerald214

+3

直到Honeycomb(API級別11) –

+0

@Stefan纔可用:@Stefan:最好在此處添加一些代碼/文本以澄清鏈接指向的內容,因爲該文檔的唯一鏈接應僅僅是註釋。 :) –

0

一個有趣的解決方法:

你可以嘗試在網頁視圖中顯示文本。

您只需將HTML標記及其全部內容寫入要顯示的字符串中,並且可以使用WebKit瀏覽器進行選擇。

這應該是相當輕量級和透明的用戶,我認爲這將解決您的問題。

讓我知道如果你需要一個代碼示例,它應該相當簡單。只需查看WebView文檔http://developer.android.com/resources/tutorials/views/hello-webview.html

祝您好運!

+0

HelloWebView示例沒有選擇功能。你能給我一些代碼(或鏈接)嗎? – Emerald214

+0

webview窗體應該固有地具有文本選擇功能。你只需要做一個longpress。 – Codeman

1

鏈路@Stefan哈倫只提供了API級別後工作11

而Android 2.2是API Lv.8,這就是爲什麼你無法獲得資源標識符的原因。