我的配置文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <ImageView
        android:id="@+id/fruit_image"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        />
    <TextView
        android:id="@+id/fruit_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginLeft="20dp"/></LinearLayout>
效果为
而把layout_gravity 改为center之后, 效果为
, 这个是为什么呢?

解决方案 »

  1.   

    你没有设置LinearLayout的oriention啊!!!!
      

  2.   

    LinearLayout的orientation默认为水平(HORIZONTAL),这时候layout_gravity只有top,bottom,center_vertical生效,你设置为center_horizontal不会生效,而center是包含center_horizontal和center_vertical的,所以才有效。
      

  3.   

    我个人认为要满足你的需求是文字水平居中应该两个两个同事设置,即layout-gravity和gravity同时设置居中,一个是布局居中,一个是内容居中。
      

  4.   

    因为你的layout_height是wrap_content,用match_parent就好了
      

  5.   

    我即将学到这里了,现在我在《第一行代码》81页。
    因为以前会做html静态网页,所以这一章看起来比较轻松。
    wrap_content 这个含义,可以理解为包裹内容的最小值,
    你设置的长高,都是最小值,那么居中就没有意义啦,因为内容已经被外边的框架紧紧地包围住了,那么它怎么有空隙可以上下居中呢?
    你需要把高设置的“宽松”一点,才能垂直居中,对吧?今天我计划学到100页,应该能彻底解答你的问题,别着急,我加油,晚上争取回答你的问题。
      

  6.   

    好啦,午休的时候来解答,
    wrap_content 的含义是,包裹住内容,
    match_parent 的含义是,以“父类”为准。比如一个网页吧,最外面有个大框,内容都在大框里,大框里边有个按钮,这个按钮是多宽,多高呢?
    wrap_content 就是以按钮内的文字为准,4个字的话,他就4个字宽,8个字就8个宽
    match_parent 就是以他的上级为准,他的上级是大框,那么就大宽你设置的是以内容为准,那么居中,自然就是原地不动了,得以大框为准,这样就可以居中了。
    因为你设置的是文本,看不到框框,如果你设置按钮,就能看到按钮总的宽度了。