2

フレームレイアウト内のレイアウトのマージンをプログラムで変更しています。私の目標は、Facebook アプリのようなスライド ビューを作成することです。このレイアウトのサイズ変更を避けることはできますか? これは私のレイアウトの移動です:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="48dp"
    android:background="#00a2ff"
    android:gravity="center_vertical"
    android:orientation="horizontal" >

    <LinearLayout
        android:id="@+id/left"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/ivGPSSearching"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="4dp"
            android:src="@drawable/actionbar_gps_searching" />
    </LinearLayout>

    <ImageView
        android:id="@+id/ivStarsFilter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:src="@drawable/actionbar_star" />
</LinearLayout>

左の LinearLayout のサイズを変更したくありません。私が欲しいものを理解してくれることを願っています:)

ありがとう

4

3 に答える 3

2

以下は、 TranslateAnimation を使用してアニメーションのリスナーを設定するためのコード例です。

   @Override
    public void onAnimationEnd(Animation animation) 
    {

    //Just set the layout params for your view (layout) which is animated,
    //to make your view shift to  the new position

     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutWidth, LayoutHeight);

     params.leftMargin = 100; //for example you want to shift 100 px from left

     params.rightMargin = -Layoutwidth; //this will avoid your view 
     //from shrinking and make it as wide as its width was, and - negative value will 
     //move it towards right

    otherLayout.setLayoutParams(params);

    }

アニメーション後にビューを移動する方法が明確になることを願っています

于 2013-04-11T07:28:56.830 に答える
2

同様のことを実現するために、Horizo​​ntalScrollView を拡張しました。onInterceptTouchEvent と onTouchEvent をオーバーライドして、常に false を返すようにしました。次に、メニューを左側に、コンテンツを右側に配置するだけです (コンテンツは画面の幅と一致する必要があります)。

最後に、最初の Horizo​​ntalScrollView スクロールをセットアップし、ボタン クリック イベントにバインドしてスクロール位置を変更します (horizo​​ntalScrollView.scrollTo または horizo​​ntalScrollView.smoothScrollTo)。

これが役立つことを願っています。

于 2012-04-17T22:46:06.377 に答える
0

私もここ数時間、これについて頭を悩ませてきました。反対側の両方のマージンを変更すると、ReleativeLayout 内のビューはサイズ変更も移動もされないことがわかります。

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
lp.setMargins(0, - yOffset, Integer.MIN_VALUE, yOffset);

これはクレイジーですが、うまくいきます...

于 2013-08-14T20:41:14.930 に答える