Is it possible to specify multiple gravity values in spinner item custom_style.xml?

87element picture 87element · Mar 8, 2011 · Viewed 74.3k times · Source

I have textview.xml, which is the item style for spinners.

<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:gravity="left|center_horizontal"
  android:textSize="18sp">
</TextView>

I know that it is possible to specify both (Gravity.LEFT | Gravity.CENTER_HORIZONTAL), but in xml that doesn't work - text is moved to the left only.

Answer

Will Tate picture Will Tate · Mar 8, 2011

87element,

I believe you intended to use layout_gravity you are only using gravity??

Yes, you can combined two of these layout_gravity attributes together with the '|' as mentioned in the documentation: http://developer.android.com/reference/android/R.attr.html#layout_gravity

But even using layout_gravity instead of just gravity (as adamp stated in his comment), the settings you are trying to combine don't make sense. You are telling it basically to align left and center along the same row. Both left and center_horizontal in this case refer to horizontal positions.

Where are you trying to align the TextView relative to the parent?

Your parent layout is like a grid where you can select a position:

|[ 1 ] [ 2 ] [ 3 ]|

|[ 4 ] [ 5 ] [ 6 ]|

|[ 7 ] [ 8 ] [ 9 ]|

  1. Top-Left: android:layout_gravity="top|left"

  2. Top-Center: android:layout_gravity="top|center_horizontal"

  3. Top-Right: android:layout_gravity="top|right"

  4. Center-Left: android:layout_gravity="center_vertical|left"

  5. Very Center: android:layout_gravity="center"

  6. Center-Right: android:layout_gravity="center_vertical|right"

  7. Bottom-Left: android:layout_gravity="bottom|left"

  8. Bottom-Center: android:layout_gravity="bottom|center_horizontal"

  9. Bottom-Right: android:layout_gravity="bottom|right"

Hope this helps!