我的Android应用程序中有以下模板。当我使用android:layout_MarginTop =“20dip”运行良好时,我可以看到布局顶部的20dip空间。
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dip"
style="@style/list_buttom_single"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:id="@+id/image" android:layout_width="wrap_content" android:layout_height="wrap_content" />
<LinearLayout android:gravity="center_vertical" android:paddingLeft="10dip" android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.0">
<TextView android:text="Login / Register" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/title" style="@style/content_page_large_text" />
<TextView android:text="sample text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/subtitle" android:visibility="visible" style="@style/content_page_small_text" />
</LinearLayout>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/itemCount" android:visibility="gone" style="@style/content_page_large_count_text" />
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/chevron" style="@style/list_buttom_chevron" />
</LinearLayout>
但是,当我尝试使用LayoutInflater以编程方式执行此操作时,我将丢失此20dip空间。
View notesView = mInflater.inflate(R.layout.list_item_single, null);
((TextView) notesView.findViewById(R.id.title)).setText("Notes");
((TextView) notesView.findViewById(R.id.subtitle)).setText("102 notes");
btnContainer.addView(notesView);
为什么我为“相同”动作获得两种不同的行为,唯一的区别是一个是包含uisng xml而另一个是使用java。
非常感谢 Ť
答案 0 :(得分:2)
因为如果指定父视图,布局参数仅与视图关联。这就是你应该使用inflate()
的另一个版本的原因:
View notesView = mInflater.inflate(R.layout.list_item_single, btnContainer, false);
...
btnContainer.addView(notesView);