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 actualizar la barra de herramientas al desplazarse con CollapsingToolbar?

Estoy tratando de moverme de un TextView a la Toolbar cuando se colapse al desplazarse.

Digamos que tengo una barra de herramientas y justo debajo de ella tengo una vista, cuando me desplazo hacia arriba y comienza a no ser visible en absoluto, quiero actualizar la barra de herramientas con este texto, aquí hay un ejemplo.

Primer Escenario:

enter image description here

Segundo Escenario:

enter image description here

He estado leyendo sobre CollapsingToolbar pero no puedo entender cómo hacerlo cuando la vista no es muy visible y si tengo que crear una barra de herramientas personalizada con un texto a la derecha donde pueda configurar, porque no es el título, es un valor adicional del título.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para pasar de un TextView a la Toolbar cuando se colapsa durante el desplazamiento, se puede utilizar CollapsingToolbarLayout en el archivo de diseño. Dentro del CollapsingToolbarLayout, se puede agregar un TextView con el texto que se desea mostrar cuando se colapse la Toolbar. Puede controlar la visibilidad del TextView cuando se colapsa o se expande la Toolbar utilizando el OnOffsetChangedListener. Aquí hay una implementación de ejemplo:

    <android.support.design.widget.coordinatorlayout ...="">
    
        <android.support.design.widget.appbarlayout ...="">
    
            <android.support.design.widget.collapsingtoolbarlayout ...="">
    
                <android.support.v7.widget.toolbar ...=""></android.support.v7.widget.toolbar>
    
                <textview android:id="@+id/title_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Título" android:textcolor="@android:color/white" android:textsize="20sp" android:gravity="center_horizontal" app:layout_collapsemode="pin"></textview>
    
            </android.support.design.widget.collapsingtoolbarlayout>
    
        </android.support.design.widget.appbarlayout>
    
        <view ...=""></view>
    
    </android.support.design.widget.coordinatorlayout>
    

    En su actividad, puede agregar OnOffsetChangedListener para actualizar el texto de TextView en Toolbar. El parámetro de offset en el método onOffsetChanged representa el desplazamiento vertical del CollapsingToolbarLayout, donde 0 está completamente expandido y -la altura máxima está completamente colapsada.

    val titleText = findViewById<textview>(R.id.title_text)
    val toolbarHeight = resources.getDimensionPixelSize(R.dimen.abc_action_bar_default_height_material)
    
    appBarLayout.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { appBarLayout, offset ->
        val absOffset = Math.abs(offset)
        if (absOffset >= appBarLayout.totalScrollRange - toolbarHeight) {
            titleText.text = "Título Actualizado"
            titleText.visibility = View.VISIBLE
        } else {
            titleText.visibility = View.GONE
        }
    })
    

    En el método onOffsetChanged, verificamos si el valor absoluto del desplazamiento es mayor o igual al rango de desplazamiento total de AppBarLayout menos la altura de Toolbar. Esto significa que la Toolbar está completamente colapsada y que debe mostrarse el TextView. Actualizamos el texto de TextView y lo hacemos visible. De lo contrario, ocultamos TextView.

    Tenga en cuenta que puede ser necesario ajustar el valor de toolbarHeight dependiendo de la altura y el estilo de su Toolbar. También puede modificar el texto o el diseño de TextView según sus necesidades.

Comments are closed.