我有2个布局文件,一个是默认布局,另一个是API 14及更高版本。 Android似乎正在夸大默认布局。我正在使用5.1.0 API 22上的手机进行测试。
布局-V14 \ list_settings_header.xml
<?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="72dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/checkbox"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/linearLayout">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_toLeftOf="@+id/switch1"
android:paddingLeft="16dp"
android:paddingStart="16dp"
android:text="Email Notifications"
android:textSize="16sp"
android:textColor="@color/black_87"/>
<TextView
android:id="@+id/email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/title"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/title"
android:layout_below="@+id/title"
android:paddingLeft="16dp"
android:paddingStart="16dp"
android:textSize="14sp"
android:textColor="@color/black_54"/>
</LinearLayout>
<Switch
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_centerVertical="true"/>
</RelativeLayout>
布局\ list_settings_header.xml
<?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="72dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_centerVertical="true"
android:layout_toLeftOf="@+id/checkbox"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:id="@+id/linearLayout">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_toLeftOf="@+id/switch1"
android:paddingLeft="16dp"
android:paddingStart="16dp"
android:text="Email Notifications"
android:textSize="16sp"
android:textColor="@color/black_87"/>
<TextView
android:id="@+id/email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/title"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignRight="@+id/title"
android:layout_below="@+id/title"
android:paddingLeft="16dp"
android:paddingStart="16dp"
android:textSize="14sp"
android:textColor="@color/black_54"/>
</LinearLayout>
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_centerVertical="true"/>
</RelativeLayout>
两种布局之间的唯一区别是复选框和开关。我在5.1.0手机上看到了复选框。
我将布局膨胀为列表视图的标题:
View view = inflater.inflate(R.layout.fragment_settings, container, false);
ListView listView = (ListView) view.findViewById(R.id.listView);
View header = inflater.inflate(R.layout.list_settings_header, listView, false);
答案 0 :(得分:0)
您可能希望在代码中手动检查版本。
你可以这样做:
int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if(currentapiVersion > 14){
//inflate layout
} else {
//inflate other layout
}
答案 1 :(得分:0)
您的布局定义完全正确。
我真的认为你正在寻找一个不存在的问题:尝试添加一个额外的View
(如TextView
),文本如“这就是布局V-14”< / em>在 layout-v14 / list_settings_header.xml 中,检查它是否出现在5.1.0设备上。