Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 23/07/15, 19:13:04
Array

[xs_avatar]
rafaxplayer rafaxplayer no está en línea
Miembro del foro
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
problema toolbar

hola compañeros estoy en un problema que no le encuentro salida mis actividades usan un toolbar con varias view en su interior que es este:

Código:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:popupTheme="@style/PopupMenu"
    android:theme="@style/toolbarStyle">

    <LinearLayout
        android:id="@+id/toolbarcontent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/logo"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:src="@drawable/ic_toolbar_normal" />

        <TextView
            android:id="@+id/texttitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginRight="15dp"
            android:layout_marginTop="-10dp"
            android:ellipsize="end"
            android:singleLine="true"
            android:text="@string/app_name"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="20dp" />
    </LinearLayout>
</android.support.v7.widget.Toolbar>
Bien la activada base que uso para las demas seria asi:

Código:
public abstract class BaseActivity extends AppCompatActivity {
    protected abstract int getLayoutResourceId();

    protected abstract String getCustomTitle();

    Toolbar toolbar;
    TextView txttitle;
    ImageView logo;
    LinearLayout toolbarContent;
    private static String TAG = BaseActivity.class.getSimpleName();

    @override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutResourceId());
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        txttitle = (TextView) findViewById(R.id.texttitle);
        toolbarContent = (LinearLayout) findViewById(R.id.toolbarcontent);
        logo = (ImageView) findViewById(R.id.logo);
        if (toolbar != null) {
            setSupportActionBar(toolbar);
            getSupportActionBar().setTitle(null);

            if (getCustomTitle() != null) {
                txttitle.setText(getCustomTitle());
            }


        }


    }
Dentro del tolbar hay dos views un texview y un image view , mi duda que me tiene desconcertado es como que la referencia a textview (textittle) funciona correctamente y puedo usar su metodologia sin problemas y sin embrago el ImageView (logo) me da null siempre, cuando los dos view están en el dentro del mismo contenedor?

Mi idea es ocultar o mostrar los dos desde un método publico en BaseActivity pero con el textview puedo y con el imageview no por lo que comentaba.

Alguna sugerencia?
Responder Con Cita


  #2  
Viejo 24/07/15, 00:50:36
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
2 cosas

1. Si lo que quieres es ponerle un icono a la Toolbar, no estoy seguro de si con lo siguiente te cargas la posibilidad de poner el up_indicator o el hamburger, pero puedes probar (para ahorrarte tener que meter un LinearLayout dentro)

Código:
app:navigationIcon="@drawable/ic_action_bar"
(tambien se puede hacer por codigo)


2. Si no recuerdo mal, Toolbar ofrece el getCustomView(), prueba a hacer el findViewById sobre la View que devuelve (por probar)

De todos modos, creo recordar que Google desaconseja el mostrar un icono personalizado (como se hacia en Holo) en la Toolbar
Responder Con Cita
  #3  
Viejo 24/07/15, 09:10:43
Array

[xs_avatar]
rafaxplayer rafaxplayer no está en línea
Miembro del foro
 
Fecha de registro: jun 2013
Localización: en la barcelona media
Mensajes: 224
Modelo de smartphone: LG-E610
Tu operador: Orange
Bueno el tema del icono es que queria que fuera personalizado y sobresaliera de la toolbar como muestra la imagen , por eso o use set logo ya que este la ajusta a la barra.


he provado a acceder a los elementos con lo que decias:
Código:
toolbarContent = (LinearLayout)getSupportActionBar().getCustomView().findViewById(R.id.toolbarcontent);
y también da nulo , pero es porque creo que antes hay que hacer un setCustomView a lo mejor.
No se que mas provar , se suponia que toolbar era como una view normal y se podia personalizar , pero al pasarle setSupportActionBar la cosa se complica , no se.. que se os ocurre mas para solucinar esto?
Responder Con Cita
  #4  
Viejo 24/07/15, 09:44:45
Array

[xs_avatar]
Dexafree Dexafree no está en línea
Mr. FAQMan
· Votos compra/venta: (1)
 
Fecha de registro: dic 2008
Mensajes: 8,021
Modelo de smartphone: Samsung Galaxy S i9000 + Galaxy Tab 10.1 WiFi
Tu operador: Movistar
A las malas siempre puedes usar un FrameLayout y posicionarlo encima.

O un RelativeLayout y el icono a piñón, también.

Nunca he tenido que modificar la Toolbar hasta ese nivel, la verdad

EDIT: En este enlace de stack (que seguro que habrás mirado) comentan una forma, pero un comentario dice que no le funciona...
http://stackoverflow.com/a/27859966
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 14:39:55 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2026 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /