Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Establecer gravedad de una vista mediante programación

Estoy trabajando en una View sobre el código fuente de Android. Me preguntaba cómo podemos configurar gravidades múltiples, a una View personalizada

Este es el XML

 <com.android.systemui.statusbar.policy.Clock android:id="@+id/clock" android:textAppearance="@style/TextAppearance.StatusBar.Clock" android:layout_width="wrap_content" android:layout_height="match_parent" android:singleLine="true" android:paddingLeft="6dip" android:gravity="center_vertical|left" /> 

Como puedes ver, la gravedad por defecto es center_vertical | left, así que mi código Java debería ser algo como esto

  View clock = mStatusBarView.findViewById(R.id.clock); if (clock != null) { SOMEHOW SET GRAVITY -> mCenterClock ? Gravity.CENTER : (Gravity.CENTER_VERTICAL | Gravity.LEFT); } 

El método setGravity no funciona en la View . Entonces, ¿existe una alternativa de ajustar la gravedad sin perder el ancho y la altura por defecto ?.

Gracias por adelantado.

  • ¿Cómo captura el clic de botón de búsqueda de SearchView?
  • SearchView es nulo Android
  • ¿Puedo escalar una vista en Android?
  • Android - SearchView en la barra de herramientas no se está expandiendo
  • Cómo escuchar el botón de búsqueda del teclado en searchView
  • Cómo agregar la misma vista a los padres varias veces inflando sólo una vez
  • Ver traer al frente no funciona
  • Diseño de animación Android
  • 3 Solutions collect form web for “Establecer gravedad de una vista mediante programación”

    Desde com.android.systemui.statusbar.policy.Clock se extiende TextView acaba de lanzar a un TextView y establecer la gravedad.

      TextView clock = (TextView) mStatusBarView.findViewById(R.id.clock); clock.setGravity(mCenterClock ? Gravity.CENTER : (Gravity.CENTER_VERTICAL | Gravity.LEFT)); 

    Ref: Código fuente

    ¿Has probado?

     clock.setGravity(Gravity.CENTER | Gravity.CENTER_VERTICAL); 

    Editar:

    Puesto que no puedes usar setGravity para una View sencilla, haz algo como esto,

    Puede usar un RelativeLayout y establecer una regla como esta …

     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); params.addRule(RelativeLayout.CENTER_HORIZONTAL|RelativeLayout.CENTER_IN_PARENT, clock.getId()); 
      com.android.systemui.statusbar.policy.Clock clock = (com.android.systemui.statusbar.policy.Clock)mStatusBarView.findViewById(R.id.clock); clock.setGravity(Gravity.CENTER_VERTICAL); 

    Pruebe el código anterior y quite View clock = mStatusBarView.findViewById (R.id.clock);

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.