2015-06-29 26 views
2

我想对准这个ImageViewcenter(水平和垂直):安卓:在RelativeLayout的重力ImageView的失败

<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> 

如果我没有经过我的ImageView它是完美的添加行(View)它的工作,但与此行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

完美桑迪:)非常感谢! – 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

您应该在View元素中使用layout_alignBottom来代替layout_alignParentBottom。

<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

您可以使用一个多布局元素合并ImageViewView元素。喜欢这个;

<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>