En realidad, no tiene que desarrollar esta función usted mismo. Solo necesita usar EditText en lugar de TextView, mientras configura el android: editable de EditText en falso. Mi código está aquí:
R.layout.edittext.xml
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="40dip"
android:editable="false"
android:background="@null"
android:textColor="#FFFFFF"/>
ListItemCopyTextActivity.java
public class ListItemCopyTextActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this);
ListView lv = new ListView(this);
String[] values = new String[15];
for (int i = 0; i < 15; i++) {
values[i] = "ListItem NO." + i;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.edittext, values);
lv.setAdapter(adapter);
ll.addView(lv, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
setContentView(ll);
}
}
Puede hacer clic en el elemento de largo, y elegir la selección de texto, copiar, cortar , etc pasado
en este momento me estoy registrando para un menú contextual y usando el administrador del portapapeles para copiar el texto completo de TextView. Pero parece que debería haber una forma predeterminada de hacer esto. – Erdal
En realidad, el menú contextual está adaptado para eso. Puede personalizarlo en su tiempo libre. También puede echar un vistazo a la clase AlertDialog. Generalmente no se usa para este propósito, pero puede llamarlo con un clic prolongado. Sin embargo, si recuerdo bien, tienes un límite de 3 botones como máximo. – Sephy
Una cosa más, no sé si es aconsejable hacerlo, pero podrías tratar de poner tu lista de vista en un framelayout y agregar otra vista/diseño adentro pero con una visibilidad perdida, y convertir su visibilidad en visible cuando un elemento de su lista se hace clic y actualizar su contenido? – Sephy