- 如果设置为null,根布局设置的高度是不起作用的,即使根布局是一个控件,比如:
<?xml version="1.0" encoding="utf-8"?>
<TextView android:layout_width="match_parent"
android:layout_height="200dp"
android:text="abc"
xmlns:android="http://schemas.android.com/apk/res/android" />
这时200dp不起作用,而是根据里面的文字大小来决定item的高度,比如如下起作用:
<TextView android:layout_width="match_parent"
android:layout_height="200dp"
android:text="abc"
android:textSize="200dp"
xmlns:android="http://schemas.android.com/apk/res/android" />
- 根布局是一个layout的情况下,根部局的高度也不起作用,而是里面子控件的高度起作用,比如下面item的高度是100dp:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="300dp">
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:text="abc"/>
</RelativeLayout>
- 如果里面的内容设置为match_parent,效果跟第一个一样,根据文字大小来决定item高度,因为parent设置的高度没用,所以里面子空间match_parent也没用:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="300dp">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="abc"/>
</RelativeLayout>
-
总结:设置为null时,因为没有父亲,根布局的layout_height没有作用,子布局的layout_height为绝对值时有用,为相对值(match_parent,wrap_content)时没用,里面内容的高度决定了item的高度(根布局为普通控件时,控件内容决定item高度,根布局为layout时,子控件设置的绝对高度或子控件的内容决定item高度)
-
如果parent设置为getview传入的parent(第三个参数false),则根布局设置的高度就有用了,比如上面第一个就是200dp了
-
如果这时候,根部局设置为match_parent,则根据里面内容来适配,比如以下item高度跟上面第一个一样,为文字的高度:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="abc"/>
</RelativeLayout>
以下高度变成了200dp:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="200dp"
android:text="abc"/>
</RelativeLayout>
- 另外,在as中如果把null变成非null,某些情况下,可能要重新编译才能看到效果(rebuild),直接run可能还是跟之前一样
网友评论