entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Android - TextView focusable no reacciona

Hola.

Tengo un TextView en cual contiene un texto largo. Para no romper el diseño deseo que se mantenga todo en una linea y el texto se corte. Si el usuario marca el TextView el texto debería de empezar a deslizar, pero no funciona. Este es el código:

Como veis ya he usado las opciones, allipsize, focusable y focusableInTouchMode.
Gracias!

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/album_item" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
    <ImageView android:id="@+id/infoinstalacion_fragment3_grid_photo_item_photo" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="centerCrop">
    <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignBottom="@+id/infoinstalacion_fragment3_grid_photo_item_photo" android:background="@color/transparent" android:padding="6dp">

        <TextView android:id="@+id/infoinstalacion_fragment3_grid_photo_item_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="marquee" android:focusable="true" android:focusableInTouchMode="true" android:singleLine="true" android:textColor="@color/white" android:textSize="16sp" android:layout_gravity="center" android:textStyle="bold" android:text="detalles" android:layout_weight="3">

    <ImageView android:id="@+id/infoinstalacion_fragment3_grid_photo_item_info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_action_about" android:layout_gravity="center" android:layout_weight="1">

    </LinearLayout>

</RelativeLayout>

white comentado Feb 12, 2015

Tu código debería funcionar normalmente o talvez no entendi el problema realmente, para no quedarme con la duda lo probe y me trabaja ( api 21 ). podrías intentar con:

TextView info = (TextView) findViewById(R.id.infoinstalacion_fragment3_grid_photo_item_title);
info.setSelected(true);

egoitz_gonzalez comentado Feb 13, 2015

Hola White.

añadiendo la linea:

info.setSelected(true)

El textView se mueve y se ve todo el texto, pero no sucede exactamente como yo quería. Ya que se empiezan a moverse todos los TextViews y automáticamente nada mas iniciarse la vista. Adjunto captura de pantalla y código del adaptardor que he codeado.

enter image description here

Parte del código ImageGirdAdapter

        public View getView(int position, View convertView, ViewGroup parent) {

        View grid;
        LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (convertView == null) {  // if it's not recycled, initialize some attributes
            grid = new View (mContext);     

            grid = inflater.inflate(R.layout.infoinstalacion_fragment3_grid_photo_item, null);

grid.findViewById(R.id.infoinstalacion_fragment3_grid_photo_item_tipo_instalacion);
            TextView textView = (TextView) grid.findViewById(R.id.infoinstalacion_fragment3_grid_photo_item_title);
            textView.setSelected(true);
            ImageView imageView = (ImageView)grid.findViewById(R.id.infoinstalacion_fragment3_grid_photo_item_photo);
            imageView.setImageResource(mThumbIds[position]);

            String textoDetalles = "Instalaciones deportivas de todo tipo.";
            String textoTipoInstalacionString = "Tipo de instalacion";
            textView.setText(textoDetalles);

        } else {
            grid = (View) convertView;
            //imageView = (ImageView) convertView;
        }

        //return imageView;
        return grid;
    }

2 Respuestas

1voto

white Puntos75600

Podrias agregar un evento al TextView y usar el metodo setSelected.

despues de textView.setText(textoDetalles); agrega:

textView.setSelected(false);

View.OnClickListener handler = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        v.setSelected(true);
    }
};

textView.setOnClickListener(handler);

intenta con este layout:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/album_item" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">
    <ImageView android:id="@+id/infoinstalacion_fragment3_grid_photo_item_photo" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="centerCrop" />

<LinearLayout android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/infoinstalacion_fragment3_grid_photo_item_photo"
    android:background="@color/transparent"
    android:padding="6dp">

    <TextView android:id="@+id/infoinstalacion_fragment3_grid_photo_item_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:focusableInTouchMode="true"
        android:focusable="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:singleLine="true"
        android:textColor="@color/white"
        android:textSize="16sp"
        android:layout_gravity="center"
        android:textStyle="bold"
        android:text="detalles"
        android:layout_weight="3" />

    <ImageView android:id="@+id/infoinstalacion_fragment3_grid_photo_item_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_action_about"
        android:layout_gravity="center"
        android:layout_weight="1" />

</LinearLayout>

</RelativeLayout>

y nos cuentas despues.

saludos!

egoitz_gonzalez comentado Feb 16, 2015

Perfecto.

Funciona. Solamente con el código java en el adaptador es suficiente.

Gracias!

0voto

anje Puntos140

Hola, saludos
Tengo un problema muy parecido a este, la única diferencia es que tengo el layout dentro de un ListView.
Todo me funciona bien, EXCEPTO que en el ListView tengo activado la opción android:listSelector="@drawable/mi_selector", para a la hora de hacer click sobre un item del ListView me cambie el fondo. Pues resulta que esto último me ha dejado de funcionar.

  <TextView android:id="@+id/mi_TextView_Id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="marquee"
        android:focusableInTouchMode="true"
        android:focusable="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:singleLine="true"
        android:textColor="@color/white"
        android:textSize="16sp" />

Básicamente, YA NO me cambia el color de fondo del item seleccionado en el ListView después de implementar el marquee en el TextView.
Saludos.
Gracias.

white comentado Mar 3, 2015

Hola @anje, esta pregunta debería estar en un nuevo tema, intenta crear uno en el sitio.

Adicionalmente agrega el codigo de tu actividad o adaptador asi como una posible imagen demostrando tu problema.

saludos!

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta