我一直在尝试创建一个布局,我可以在父级的左侧放置一个文本,在Android的父级右侧放置一个ImageView。我使用RelativeLayout来实现这一点,这里是布局文件
<TableLayout
android:id="@+id/prop_displ_tbl_descr"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="7dp">
<!-- Description -->
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RelativeLayout
android:id="@+id/prop_displ_rel_descr"
android:clickable="true"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Deskripsi"
android:textStyle="bold"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/prop_displ_img_collaps_descr"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageView
android:id="@+id/prop_displ_img_collaps_descr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_alignParentRight="true"
android:background="@drawable/ic_arrowdown" />
</RelativeLayout>
</TableRow>
<TableRow
android:id="@+id/prop_displ_tblrow_descr"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/prop_displ_txtdescription"
android:textAppearance="?android:attr/textAppearanceMedium" />
</TableRow>
</TableLayout>
第一次显示时布局正确。问题是因为我为RelativeLayout实现了onTouchListener,使prop_displ_tblrow_descr TableRow可见性为GONE,有时文本消失,ImageView将显示在左侧。
以下是代码:
relDescr.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if(motionEvent.getAction() == MotionEvent.ACTION_UP) {
mDescrIsExpanded = !mDescrIsExpanded;
setCollapsibleDescr();
// update ui
relDescr.invalidate();
}
return false;
}
});
private void setCollapsibleDescr() {
if(mTblRowDescr != null) {
if(mDescrIsExpanded) {
// view is expanded
mTblRowDescr.setVisibility(View.VISIBLE);
mImgDescr.setBackgroundResource(R.drawable.ic_arrowup);
} else {
// view is collapsed
mTblRowDescr.setVisibility(View.GONE);
mImgDescr.setBackgroundResource(R.drawable.ic_arrowdown);
}
}
}
这是正确的布局(在调用片段后首次显示):
这是不正确的布局(点击几次后):
它并不是每次都会发生,但它经常发生,而且只发生在我的真实设备而不是模拟器中。我使用小米4i Android棒棒糖。
哪一部分错了?如何在不使用相对布局的情况下在父级右侧显示视图?
谢谢