如何在android中启用选择/复制文本?

时间:2016-05-05 14:16:00

标签: android select button text copy

这是我的应用策略:

  • 有一个包含文字的文字视图。
  • 为了编辑它们,我定义了动作模式项目(例如编辑 - 这将 文本视图文本视图编辑文本)虽然有一些默认值 选择all / copy / ..作为选择文本的动作,所以我不想要 定义它们。

我使用此代码启用默认选择/复制按钮。 但是当我点击按钮时,没有任何反应。为什么??? xml代码:

 <TextView
    android:id="@+id/speech"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="30dp"
    android:textSize="25sp" android:textAlignment="inherit"
    android:selectAllOnFocus="true"
    android:background="@drawable/curved_background"
    android:layout_centerInParent="true" android:textIsSelectable="true"
    android:padding="10dp"  />

在类中初始化TextView:

 speech_text = (TextView) findViewById(R.id.speech);
 registerForContextMenu(speech_text);
    speech_text.setTextIsSelectable(true);
    speech_text.setCustomSelectionActionModeCallback(new SelectText());

选择文本java类:

public class SelectText implements ActionMode.Callback {

@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {


    MenuInflater inflater = mode.getMenuInflater();
    inflater.inflate(R.menu.text_select, menu);
    return true;
}

@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
    return false;
}

@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
    //  Log.d(Log, String.format("onActionItemClicked item=%s/%d", item.toString(), item.getItemId()));

    switch (item.getItemId()) {

        case ... //other actions
            return true;
    }
    return true;
}

@Override
public void onDestroyActionMode(ActionMode mode) {

}
}

注意: 因为我控制我的代码。问题是在这一行中定义SelectText类:speech_text.setCustomSelectionActionModeCallback(new SelectText());因为当我删除这个代码时,每件事都很好!

1 个答案:

答案 0 :(得分:0)

您可以通过添加以下行来启用应用中的文字以便复制/粘贴到剪贴板中:

android:textIsSelectable

有关详细信息,请查看以下参考, http://developer.android.com/reference/android/widget/TextView.html

感谢。