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 obtener el recuento de símbolos que caben en el editText sin desplazamiento horizontal?

Tengo un editText que se desplaza horizontalmente. Quiero disminuir el tamaño del texto si el texto no cabe en editText sin desplazarse. Intenté usar las siguientes condiciones:

var textSize = edtResult.textSize / resources.displayMetrics.scaledDensity

    if (edtResult.width >= cardView.width && textSize > 22.0)

pero edtResult.width devuelve el ancho sin desplazamiento.

Entonces mi pregunta es:

  1. ¿Cómo obtener la cantidad de símbolos que pueden caber en editText sin desplazamiento con el tamaño de texto actual?
  2. ¿O cómo obtener el ancho de editText con los símbolos que no encajan?
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener el recuento de símbolos que pueden caber en el EditText sin desplazamiento con el textSize actual, puede utilizar la clase Paint para medir el ancho del texto. Aquí hay un ejemplo:

    val paint = Paint()
    paint.textSize = edtResult.textSize
    val availableWidth = edtResult.width - edtResult.paddingLeft - edtResult.paddingRight
    val textWidth = paint.measureText(edtResult.text.toString())
    
    if (textWidth > availableWidth) {
        // Disminuya el textSize
    }
    

    Para obtener el ancho del EditText con los símbolos que no caben, puede utilizar la clase Layout para medir el ancho del texto que actualmente es visible. Aquí hay un ejemplo:

    val layout = edtResult.layout
    val start = layout.getLineStart(0)
    val end = layout.getLineEnd(layout.lineCount - 1)
    val visibleText = edtResult.text.substring(start, end)
    val visibleWidth = layout.getLineWidth(layout.lineCount - 1)
    
    if (visibleWidth < edtResult.width) {
        // Aumente el textSize
    } else {
        // Disminuya el textSize
    }
    

    Tenga en cuenta que el segundo enfoque puede no ser preciso si el texto se envuelve en varias líneas.

Comments are closed.