原來是在文字編輯框裡「長按」就可以了,剪貼簿裡沒東西就會提示選取,有東西就會提示貼上,如果選取後再「長按」一次就會提示複製或剪下。
那在程式裡怎麼使用剪貼簿呢?主角就是 ClipboardManager,主要 API 為 hasText()、getText() 和 setText()。
練習範例:
按下 ABC 就會分別將 ABC 寫到(append)剪貼簿裡,再將彙整結果寫到文字編輯框裡。
UI 設定檔:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" > <Button android:id="@+id/tvABtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="A" /> <Button android:id="@+id/tvBBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="B" /> <Button android:id="@+id/tvCBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="C" /> <Button android:id="@+id/tvClearBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Clear" /> </LinearLayout> <EditText android:id="@+id/edit" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>Activity 程式:
public class ClipboardActivity extends Activity implements OnClickListener {
private ClipboardManager cbMgr;
private static final String TAG = "ClipboardActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.cbMgr = (ClipboardManager) this.getSystemService(CLIPBOARD_SERVICE);
((Button) this.findViewById(R.id.tvABtn)).setOnClickListener(this);
((Button) this.findViewById(R.id.tvBBtn)).setOnClickListener(this);
((Button) this.findViewById(R.id.tvCBtn)).setOnClickListener(this);
((Button) this.findViewById(R.id.tvClearBtn)).setOnClickListener(this);
}
@Override
public void onClick(View v) {
EditText edit = (EditText) this.findViewById(R.id.edit);
if (v.getId() == R.id.tvClearBtn) {
this.cbMgr.setText("");
edit.setText("");
}
else {
CharSequence txt = null;
if (v.getId() == R.id.tvABtn || v.getId() == R.id.tvBBtn
|| v.getId() == R.id.tvCBtn) {
txt = ((Button) v).getText();
}
Log.d(TAG, (String) txt);
if (this.cbMgr.hasText()) { // 剪貼簿中有無字串
txt = this.cbMgr.getText() + " " + txt; // 取得剪貼簿中的字串
}
this.cbMgr.setText(txt); // 設定剪貼簿中的字串
edit.setText(txt);
Log.d(TAG, (String) txt);
}
}
}
沒有留言:
張貼留言