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.

Cambiar el color de la barra de acciones solo en el fragmento.

Estoy creando una aplicación de películas y quiero cambiar el color de la barra de acciones a transparente, pero solo en un fragmento específico.

Estuve pensando en crear un estilo de barra de acciones en theme.xml, pero no pude hacerlo sin cambiar toda la barra de acciones de la aplicación.

También pensé en crear una ToolBar personalizada y luego asignarla con un botón de retroceso, pero la barra de acciones se muestra con la ToolBar personalizada que hice.

Estoy utilizando MVVM.

Intenté hacer lo siguiente, pero está cambiando el color de la barra de acciones en toda la aplicación en lugar de solo en este fragmento:

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    val view =
        inflater.inflate(com.dapps.moviesmvvm.R.layout.movie_details_fragment, container, false)

    toolbar = view.findViewById<android.widget.toolbar>(R.id.toolbar)


    setHasOptionsMenu(true)

    // Cambiar el color de la barra de acciones a rojo para toda la aplicación, no solo el fragmento.
    val actionbar = (activity as AppCompatActivity).supportActionBar
    actionbar?.setBackgroundDrawable(ColorDrawable(ContextCompat.getColor(context!!, android.R.color.holo_red_dark)));


    toolbar.setTitle(R.string.app_name)




    return view
}

¿Cuál es la mejor práctica para cambiar el color de la barra de acciones solo en este fragmento específico?

¡Gracias!

EDIT:
Cuando intento establecer el color de la barra de acciones como Color.Transparent, el color cambia a gris oscuro en su lugar.</android.widget.toolbar>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para cambiar el color de la barra de acción a transparente solo en un fragmento específico, puedes seguir los siguientes pasos:

    1. Crea un tema personalizado en tu archivo styles.xml que establezca el color de la barra de acción como transparente:
    <style name="CustomActionBar" parent="@style/ThemeOverlay.AppCompat.ActionBar">
        <item name="android:background">@android:color/transparent</item>
    </style>
    
    1. En el método onCreate de tu fragmento, establece el tema personalizado:
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    
        // Establecer tema personalizado para cambiar el color de la barra de acción a transparente
        activity?.setTheme(R.style.CustomActionBar)
    }
    
    1. En el método onCreateView de tu fragmento, infla el diseño de tu barra de herramientas personalizada y establecela como la barra de acción:
    override fun onCreateView(
            inflater: LayoutInflater, container: ViewGroup?,
            savedInstanceState: Bundle?
    ): View? {
        // Inflar el diseño de la barra de herramientas personalizada
        val view = inflater.inflate(R.layout.toolbar_layout, container, false)
    
        // Establecer la barra de herramientas como la barra de acción
        (activity as AppCompatActivity).setSupportActionBar(view.toolbar)
    
        // Establecer el título de la barra de acción
        (activity as AppCompatActivity).supportActionBar?.title = "Mi título"
    
        return view
    }
    

    De esta manera, debería cambiar el color de la barra de acción a transparente únicamente en este fragmento específico. Si el color cambia a un gris oscuro en lugar de transparente, es posible que también necesites establecer el color de la vista detrás de la barra de acción como blanco o transparente.

Comments are closed.