我想我通过扩展的LinearLayout做一个复合控件,这里是我的代码:如何在LinearLayout中添加空白空间?
public class MemberView extends LinearLayout {
private TextView contactName;
private ImageView removeContact;
private ImageView contactPicture;
public MemberView(Context context) {
super(context);
//Context thisContext = getContext();
onCreate(context);
}
private void onCreate(Context context) {
contactName = new TextView(context);
contactName.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
contactName.setText("Mohammad");
removeContact = new ImageView(context);
removeContact.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
removeContact.setImageResource(R.drawable.ic_menu_delete);
contactPicture = new ImageView(context);
contactPicture.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
contactPicture.setImageResource(R.drawable.ic_contact_picture);
setClickable(true);
setOrientation(LinearLayout.HORIZONTAL);
addView(contactName);
addView(removeContact);
addView(contactPicture);
}
}
我希望它看起来像下面UI原型:
但我的代码的结果是:
我尝试添加一个垂直的LinearLayout和一些空间添加到它,但没有用: 下面是编辑的onCreate代码:
private void onCreate(Context context) {
contactName = new TextView(context);
contactName.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
contactName.setText("Mohammad");
removeContact = new ImageView(context);
removeContact.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
removeContact.setImageResource(R.drawable.ic_menu_delete);
contactPicture = new ImageView(context);
contactPicture.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
contactPicture.setImageResource(R.drawable.ic_contact_picture);
LinearLayout layout2 = new LinearLayout(context);
layout2.setOrientation(LinearLayout.VERTICAL);
layout2.addView(new Space(context));
layout2.addView(contactName);
layout2.addView(new Space(context));
setClickable(true);
setOrientation(LinearLayout.HORIZONTAL);
addView(layout2);
addView(removeContact);
addView(contactPicture);
}
尝试使用RelativeLayout的,而不是线性 – 2013-03-25 05:50:24
@No_Rulz在使用RelativeLayout的我必须使用RelativeLayout.LayoutParams和.addRule,这需要控件的ID我累.getId一个组件,但是没有用。我在XML中使用RelativeLayout,它是我的问题的完美解决方案:) – malhobayyeb 2013-03-25 06:32:43
@No_Rulz没关系,明白了。我必须设置ID才能使用对象的getId。 – malhobayyeb 2013-03-25 06:42:45