自定义组件中LayoutPrams的leftMargin属性

时间:2012-08-06 19:03:51

标签: android android-layout android-linearlayout ontouchlistener

我有一个自定义组件,它扩展了LinearLayout并实现了onTouchListener

当onTouch触发并改变自定义视图的leftMargin属性时,此组件对图形进行一些更改

当我将组件添加到项目而不覆盖onTouch方法时,一切似乎都有效,但是当我覆盖onTouch方法时,左边距状态变为相对于屏幕的宽度。

为什么会这样?

enter image description here

自定义组件:

    @Override
    public void setOnTouchListener(OnTouchListener l) {
        super.setOnTouchListener(l);

        navigationButton.setonTouchListener(l)
    }

    @Override
    public boolean onTouch(View view, MotionEvent event) {
       .....
       return true;
    }

的活动:

    CustomComponent customComponent = (CustomComponent)findViewById(R.id.custom_component);
    customComponent.setOnTouchListener(new OnTouchListener(.....  // This part leads to the change in leftMargin of the customComponent

修改 现在编辑了一点代码: 之前:

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="64.67dp"
        android:gravity="right|center_vertical" >


            <com.est.bla.bla.customcomponents.SomeCustomComponent
                android:id="@+id/someid"
                android:gravity="center"
                android:layout_marginRight="6dip"
                android:layout_width="100dip"
                android:layout_height="50dip" >
            </com.est.bla.bla.customcomponents.SomeCustomComponent>

现在:(现在它正常工作)

 <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="64.67dp"
        android:layout_alignParentRight="true"
        android:gravity="center_vertical" >


            <com.est.bla.bla.customcomponents.SomeCustomComponent
                android:id="@+id/someid"
                android:gravity="center"
                android:layout_marginRight="6dip"
                android:layout_width="100dip"
                android:layout_height="50dip" >
            </com.est.bla.bla.customcomponents.SomeCustomComponent>

所以我想在这种特殊情况下,layout_alignParentRight="true"优于gravity="right"

0 个答案:

没有答案