es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo hacer que los hipervínculos en ventanas emergentes sean clickeables en Android Studio?

Tengo una aplicación de Android que abre algunas ventanas emergentes. Pero los hipervínculos en la ventana emergente no son clicables. Intenté algunos métodos como:

en activity_main.xml

Creo que el problema se debe a que mi texto está en una ventana emergente.
Aquí está el código:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView dataList = findViewById(R.id.dataList);

        dataList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                BlackBoardEntry entry = (BlackBoardEntry) parent.getItemAtPosition(position);
                String content = entry.getContent();
                LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View popupView = inflater.inflate(R.layout.content_popup, null, false);
                ((TextView) popupView.findViewById(R.id.contentView)).setText(content);

                PopupWindow popup = new PopupWindow(popupView, 500, 1000, true);
                popup.showAtLocation(parent, Gravity.CENTER, 0, 0);


            }
        });

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    List<blackboardentry> entries = BlackBoardClient.getBlackBoardEntries();
                    BlackBoardAdapter adapter = new BlackBoardAdapter(entries, getApplicationContext());
                    dataList.post(new Runnable() {
                        @Override
                        public void run() {
                            dataList.setAdapter(adapter);
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}

Se ve así:

(la imagen de la ventana emergente que se abre cuando se hace clic en algún tema)

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con la ventana emergente es que los hipervínculos no son clicables. Esto se debe a que el texto en la ventana emergente no está configurado para ser clicable. Una forma de solucionar esto es agregando la siguiente línea de código después de establecer el texto en la ventana emergente:

    ((TextView) popupView.findViewById(R.id.contentView)).setMovementMethod(LinkMovementMethod.getInstance());
    

    Esto establece el método de movimiento del texto en la vista de texto en LinkMovementMethod, lo que permite que los enlaces sean clicables. Esto debería solucionar el problema.

    “`java
    public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView dataList = findViewById(R.id.dataList);
    
        dataList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                BlackBoardEntry entry = (BlackBoardEntry) parent.getItemAtPosition(position);
                String content = entry.getContent();
                LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View popupView = inflater.inflate(R.layout.content_popup, null, false);
                ((TextView) popupView.findViewById(R.id.contentView)).setText(content);
                ((TextView) popupView.findViewById(R.id.contentView)).setMovementMethod(LinkMovementMethod.getInstance());
    
                PopupWindow popup = new PopupWindow(popupView, 500, 1000, true);
                popup.showAtLocation(parent, Gravity.CENTER, 0, 0);
            }
        });
    
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    List<blackboardentry> entries = BlackBoardClient.getBlackBoardEntries();
                    BlackBoardAdapter adapter = new BlackBoardAdapter(entries, getApplicationContext());
                    dataList.post(new Runnable() {
                        @Override
                        public void run() {
                            dataList.setAdapter(adapter);
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
    

    }
    “`

Comments are closed.