单击后,RelativeLayout alignParentRight变得混乱

时间:2015-07-19 14:27:24

标签: android click relativelayout

我一直在尝试创建一个布局,我可以在父级的左侧放置一个文本,在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);
        }
    }
}

这是正确的布局(在调用片段后首次显示): correct layout at first display

这是不正确的布局(点击几次后): incorrecy layout after click some times

它并不是每次都会发生,但它经常发生,而且只发生在我的真实设备而不是模拟器中。我使用小米4i Android棒棒糖。

哪一部分错了?如何在不使用相对布局的情况下在父级右侧显示视图?

谢谢

0 个答案:

没有答案