2015-06-29 5 views
2

Я хотел бы, чтобы выровнять это ImageView в center (горизонтальная и вертикальная):Android: гравитация ImageView в RelativeLayout не удалось

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/titletab" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/slidingtab_icon_header" 
    android:gravity="center"> 

    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="@dimen/slidingtab_item_icon_size" 
     android:layout_height="@dimen/slidingtab_item_icon_size" 
     android:layout_gravity="center_horizontal" 
     android:src="@drawable/ic_event_black_18dp"/> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="1dp" 
     android:layout_alignParentBottom="true" 
     android:background="@color/sliding_tab_border_color"/> 

</RelativeLayout> 

Если я не добавить линии (View) после того, как мой ImageView это прекрасно, это работа, но с этой строкой gravity не работает.

Спасибо заранее!

ответ

2

Необходимо изменить недвижимость, и ваше представление прекрасное. Просто проверьте ниже, и вы видите, что я изменяю свойство гравитации.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/titletab" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/slidingtab_icon_header" 
    > 

    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="@dimen/slidingtab_item_icon_size" 
     android:layout_height="@dimen/slidingtab_item_icon_size" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:src="@drawable/ic_launcher"/> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="1dp" 
     android:layout_alignParentBottom="true" 
     android:background="@color/sliding_tab_border_color"/> 

</RelativeLayout> 

Вы должны использовать

android:layout_centerHorizontal="true" 
android:layout_centerVertical="true" 

вместо

android:layout_gravity="center_horizontal|center_vertical" 

, потому что это работает в LinearLayout. Но для RelativeLayout необходимо использовать вышеуказанное свойство для установки силы тяжести.

+0

Perfect Sandy :) Большое спасибо! – anthony

+0

Всегда приветствую @anthony. –

1

Попробуйте android:layout_centerInParent="true" Недвижимость Relativelayout и удалите gravity.

<ImageView 
     android:id="@+id/icon" 
     android:layout_width="@dimen/slidingtab_item_icon_size" 
     android:layout_height="@dimen/slidingtab_item_icon_size" 
     android:layout_centerInParent="true" 
     android:src="@drawable/ic_event_black_18dp"/> 
0

Вы shoud используете layout_alignBottom вместо layout_alignParentBottom в элементе View.

<View 
    android:layout_width="match_parent" 
    android:layout_height="1dp" 
    android:layout_alignBottom="@+id/icon" 
    android:background="@color/sliding_tab_border_color" /> 
0

Смените ваш код на это. Это работает и я изменил значок на тот, который был доступен со мной, вы можете использовать свой значок

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/titletab" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/slidingtab_icon_header"> 



    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="@dimen/slidingtab_item_icon_size" 
     android:layout_height="@dimen/slidingtab_item_icon_size" 
     android:src="@drawable/abc_ic_ab_back_mtrl_am_alpha" 
     android:layout_gravity="center_horizontal" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 

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

     <View 
      android:layout_width="match_parent" 
      android:layout_height="1dp" 
      android:layout_alignParentBottom="true"/> 
    </LinearLayout> 

</RelativeLayout> 
0

Вы можете использовать еще один элемент макета для слияния ImageView и View элементов. Как это;

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/titletab" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/slidingtab_icon_header" 
    android:gravity="center"> 

    <RelativeLayout 
     android:layout_centerInParent="true" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <ImageView 
      android:id="@+id/icon" 
      android:layout_width="@dimen/slidingtab_item_icon_size" 
      android:layout_height="@dimen/slidingtab_item_icon_size" 
      android:src="@drawable/ic_event_black_18dp"/> 

     <View 
      android:layout_below="@+id/icon" 
      android:layout_width="match_parent" 
      android:layout_height="1dp" 
      android:background="@color/sliding_tab_border_color"/> 

    </RelativeLayout> 

</RelativeLayout> 

 Смежные вопросы

  • Нет связанных вопросов^_^