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.

Control personalizado de múltiples barras de búsqueda

Tengo 5 barras de búsqueda en una actividad que funcionan perfectamente. Su mínimo y máximo están configurados de 0 a 100 cada uno. Necesito asegurarme de que al menos una de las barras de búsqueda siempre esté en su nivel máximo, es decir, 100. Por ejemplo, si sb1=sb2=sb3=sb4=50 y sb5=100, entonces sb5 no se puede mover pero sb1-4 siguen siendo movibles. Si sb2 se mueve a 100, entonces todas las sb’s están habilitadas. ¿Cómo puedo editar mis casos a continuación o hay una mejor manera de lograr esto?

@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2)
{

switch (arg0.getId())
{
case R.id.sb1:
tv1.setText(arg1);
break;
case R.id.sb2:
tv2.setText(arg1);
break;
case R.id.sb3:
tv3.setText(arg1);
break;
case R.id.sb4:
tv3.setText(arg1);
break;
case R.id.sb5:
tv3.setText(arg1);
break;
}

}

@Override
public void onStartTrackingTouch(SeekBar arg0)
{
// TODO Auto-generated method stub
}

@Override
public void onStopTrackingTouch(SeekBar arg0)
{
// TODO Auto-generated method stub
}

Tags:  ,

Answer

  1. Avatar for davy.ai

    Una forma de lograr esto es agregar una verificación después de cada caso que asegure que al menos una barra de búsqueda esté configurada en su máximo. Aquí hay un fragmento de código actualizado:

    “`@Override
    public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2)
    {

    switch (arg0.getId()) 
    {
    case R.id.sb1:
        tv1.setText(arg1);
        break;
    case R.id.sb2:
        tv2.setText(arg1);
        break;
    case R.id.sb3:
        tv3.setText(arg1);
        break;
    case R.id.sb4:
        tv3.setText(arg1);
        break;
    case R.id.sb5:
        if (arg1 < 100) {
            arg0.setProgress(100);
            tv3.setText("100");
        } else {
            tv3.setText(arg1);
        }
        break;
    }
    
    // Verificar si al menos una barra de búsqueda está configurada en su máximo
    if (sb1.getProgress() < 100 && sb2.getProgress() < 100 &&
        sb3.getProgress() < 100 && sb4.getProgress() < 100 && sb5.getProgress() < 100) 
    {
        sb1.setEnabled(true);
        sb2.setEnabled(true);
        sb3.setEnabled(true);
        sb4.setEnabled(true);
        sb5.setEnabled(false);
    } else {
        sb1.setEnabled(true);
        sb2.setEnabled(true);
        sb3.setEnabled(true);
        sb4.setEnabled(true);
        sb5.setEnabled(true);
    }
    

    }

    @Override
    public void onStartTrackingTouch(SeekBar arg0)
    {
    // TODO Auto-generated method stub

    }

    @Override
    public void onStopTrackingTouch(SeekBar arg0)
    {
    // TODO Auto-generated method stub

    }“`

    En este código actualizado, el método onProgressChanged verifica si la barra de búsqueda que se está actualizando es sb5 y, si es así, verifica si su progreso es inferior a 100. Si lo es, establece el progreso en 100 y actualiza su vista de texto correspondiente. De lo contrario, actualiza la vista de texto normalmente.

    Después de actualizar el progreso y la vista de texto, el método verifica si al menos una barra de búsqueda está configurada en su máximo. Si no lo está, deshabilita sb5 para que no se pueda mover. Si al menos una barra de búsqueda está configurada en su máximo, habilita todas las barras de búsqueda.

Comments are closed.