0

そのため、ビューのボタンクリック領域をアンドロイドがクリッピングすることに問題があります。現時点では非常に単純なビューがあり、アニメーションの前に、幅と高さの両方で fill_parent になるように指示しているにもかかわらず、ビューの幅はそれに含まれるボタンのサイズに制限されています。

setClipChildren(false) で正しく動作するアニメーションの描画がありますが、これでもボタンをクリックできません。また、実際のボタンのビューを正しく移動しています。これは、ボタンの 1 つ (このアニメーションではすべて独立して動いている 5 つ) が最初の開始位置の真上に移動すると、クリックすることができ、偶数を正しく受け取るためです。

これが最も外側のビューに使用するコードです(後でこのビューをより大きなプロジェクトに追加する方法をシミュレートするために2つ持っています):

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <com.tests.FancyBottomTab
            android:id="@+id/fancyBottomTab1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="5dp"
            android:gravity="center_horizontal" 
            android:clipChildren="false">

        </com.tests.FancyBottomTab>

    </RelativeLayout>

次に、FancyBottomTab がレイアウト xml として使用しているものを次に示します。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_horizontal"
        android:orientation="vertical" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="5dp"
            android:background="@drawable/b1"
            android:paddingBottom="5dp" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="5dp"
            android:background="@drawable/b2"
            android:paddingBottom="5dp"  />

       <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="5dp"
            android:background="@drawable/b3"
            android:paddingBottom="5dp"  />

        <Button
            android:id="@+id/button4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="5dp"
            android:background="@drawable/b4"
            android:paddingBottom="5dp"  />

        <Button
            android:id="@+id/button5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="5dp"
            android:background="@drawable/b5"
            android:paddingBottom="5dp"  />

        <Button
            android:id="@+id/fancyRedButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:background="@drawable/fancy_red_button"
            android:visibility="visible" />

    </RelativeLayout>

更新: アニメーションが幅 100 dp のセミクリクル パターンであり、ボタンが等間隔に配置され、ビューが正しく移動したと仮定してください。うまくいけば、これでいくつかの問題が解決し、解決策を見つけるのに役立ちます。

もう一度更新: OK、今度は誰かが私が何が間違っているのかを理解するのを手伝ってくれるはずです。背景を編集して、ボタンを含む RelativeLayout のオンが半透明 (下の画像の灰色) になるようにしました。外側の RelativeLayout の背景は白です。外側の RelativeLayout は、後でレイアウトのために相対レイアウトのままにしておく必要がありますが、これに使用される XML は次のとおりです。

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/white"
        android:orientation="vertical" >


        <com.dobango.tests.FancyBottomTab
            android:id="@+id/fancyBottomTab1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="5dp"
            android:clipChildren="false"
            android:gravity="center_horizontal" >

        </com.dobango.tests.FancyBottomTab>

    </RelativeLayout>

これは、何かが間違っていることを十分に明確にするはずの色を追加したスクリーンショットですが、まったく見えません。

ここに画像の説明を入力

4

1 に答える 1

0

OK、特にXMLファイルで同じことをすでに言っているので、ビューを正しく表示するためにこれが絶対に必要だった理由はわかりませんが、この行は問題を完全に解決しました:

   view.setLayoutParams(new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

この行をカスタムの Relative Layout クラスに入れなければならない理由を誰かが知っている場合は、コメントして説明してください。ありがとう。

于 2012-05-22T20:42:37.143 に答える