需求是:
我想以适当的方式构建listitem的布局,我尝试了包含两者的relativelayout,并设置了两个android:visibility=gone
,但它不起作用。
我想问题存在于以下几个方面:
listitem布局如下:
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="72dp"
android:orientation="horizontal"
android:layout_gravity="center_horizontal">
<ImageButton
android:id="@+id/ibClinicMessageLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="16dp"
/>
<!-- item中的text,subtext和时间 -->
<LinearLayout
android:id="@+id/llTotalText"
android:layout_toRightOf="@id/ibClinicMessageLeft"
android:orientation="vertical"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvClinicMessagetTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginTop="20dp"
android:layout_toRightOf="@id/ibClinicMessageLeft"
android:layout_centerVertical="true"
android:typeface="sans"
android:textColor="@color/text"
android:textSize="16sp" />
<TextView
android:id="@+id/tvClinicMessageTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginTop="20dp"
android:layout_centerVertical="true"
android:typeface="sans"
android:textColor="@color/hint"
android:textSize="12sp" />
</LinearLayout>
<TextView
android:id="@+id/tvClinicMessageText"
android:ellipsize="marquee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_marginTop="6dp"
android:layout_marginLeft="16dp"
android:layout_below="@id/tvClinicMessagetTitle"
android:layout_toRightOf="@+id/ibClinicMessageLeft"
android:typeface="sans"
android:textColor="@color/subtext"
android:textSize="14sp" />
</LinearLayout>
<RelativeLayout
android:layout_toRightOf = "@id/llTotalText"
android:layout_width ="wrap_content"
android:layout_height ="fill_parent"
>
< CheckBox
android:id ="@+id/cbCheckBox"
android:layout_width ="wrap_content"
android:layout_height ="wrap_content"
android:visibility ="gone"
android:clickable ="false"
android:focusable ="false"
/>
<!-- item中的箭头图片 -->
< ImageView
android:id ="@+id/ivItemArrow"
android:src ="@drawable/im_arrow"
android:layout_width ="wrap_content"
android:layout_height ="fill_parent"
android:layout_centerVertical ="true"
android:layout_marginRight ="16dp"
android:visibility ="gone"
/>
</ RelativeLayout>
</LinearLayout>
答案 0 :(得分:0)
在这里,您要做的是将imageview的可见性设置为VISIBLE,而不是在列表视图中添加任何复选框。
然后在运行时,在List onItemClickListener中,将imageview的可见性设置为INVISIBLE并实例化一个复选框并将其设置为VISIBLE并将其置于所需位置。
这样的事情:
CheckBox edt;
edt = new CheckBox(this);
RelativeLayout.LayoutParams lp =
new RelativeLayout.LayoutParams
(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT
);
lp.setMargins(25, 0, 0, 0); // move 25 px to right (increase left margin)
edt.setLayoutParams(lp); // lp.setMargins(left, top, right, bottom);
您可以将边距设置为您使用的图像视图。
像这样:
ImageView iv = (ImageView)findViewById(R.id.iv1);
RelativeLayout.LayoutParams newparam = iv.getLayoutParams();
那就是它。