Set gravity of a View Programmatically

android, gravity, java, view

Solution

Since com.android.systemui.statusbar.policy.Clock extends TextView just cast it to a TextView and set the gravity.

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

Ref: Source code

Problem

Im working on a `View` over Android Source Code. I was wondering how can we setup multiple gravities, to a custom `View` This is the 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" /> ``` As you see, default gravity is center_vertical|left, so my Java code should be something like this ``` View clock = mStatusBarView.findViewById(R.id.clock); if (clock != null) { SOMEHOW SET GRAVITY -> mCenterClock ? Gravity.CENTER : (Gravity.CENTER_VERTICAL | Gravity.LEFT); } ``` setGravity method don't work on `View`. So is there an alternative of setting gravity without losing the width and height by default?. Thanks in advance.

Original source