我有一些“卡”,这是一个简单的LinearLayout与TextView里面
xmlns:card="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
android:id="@+id/card_label_txt"
android:layout_width="wrap_content"
android:text="label" />
那么我的Main Fragment有一个垂直的LinearLayout ..在这个主要的片段我添加这个“卡”到主要的布局:
# main fragment layout
View view = inflater.inflate(R.layout.main_activity, null);
LinearLayout ll = (LinearLayout) view
.findViewById(R.id.main_activity_ll);
# get card
View card = inflater.inflate(R.layout.card, null);
# add to fragment layout
ll.addView(card);
这个工作非常好,我的卡填满了片段布局的整个宽度.其实是我期待的.
现在我为我的卡创建了一个单独的类:
Class Card extends LinearLayout{
public Card(Context context) {
super(context);
View view = LayoutInflater.from(getContext()).inflate(
R.layout.card, null);
this.addView(view);
}
}
而且,如果我将卡添加到主要的片段布局中:
# main fragment layout
View view = inflater.inflate(R.layout.main_activity, null);
LinearLayout ll = (LinearLayout) view
.findViewById(R.id.main_activity_ll);
# add new Card to fragment layout
ll.addView(new Card(getActivity());
那么它被添加了但是卡的宽度不再被填充,而是被包装到textview.
有人可以解释一下,为什么我通过添加相同布局的这两种方法得到不同的宽度大小?
解决方案是改变解决这个问题的卡类:
public Card(Context context) {
super(context);
LayoutInflater.from(getContext()).inflate(
R.layout.card, this);
}
}