1

LinearLayout を拡張し、onTouchListener を実装するカスタム コンポーネントがあります。

このコンポーネントは、onTouch の起動時にグラフィックに変更を加え、カスタム ビューの leftMargin 属性を変更します。

onTouch メソッドをオーバーライドせずにコンポーネントをプロジェクトに追加すると、すべてが機能しているように見えますが、onTouch メソッドをオーバーライドすると、左マージンの状態が画面の幅に対して相対的になります。

なぜそうなのですか?

ここに画像の説明を入力

カスタム コンポーネント:

    @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"

4

0 に答える 0