2012-04-17 16 views
2

framelayout内のレイアウトの余白をプログラムで変更しています。私の目標は、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のサイズを変更したくないです。ただ、常にfalseを返すようにonInterceptTouchEventとonTouchEventをオーバーライド - 私はあなたが私は:)

おかげ

+0

はあなたが解決策を見つけました! これはまさに私が直面していることです。 – AMTourky

+0

多分マージンの代わりにsetXを使った絶対レイアウト –

答えて

2

たちはHorizo​​ntalScrollViewを拡張似た何かを達成したいのか理解を願っています。 次に、左側のメニューと右側のコンテンツ(コンテンツは画面の幅と一致する必要があります)を置くだけです。

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

こちらがお役に立てば幸いです。

+0

おかげでJulianoが、私は他のアニメーションにも問題があります。実際、例えばImageViewを含むカスタムアニメーションでは、ImageViewは変換中にスケーリングされます。 TranslateAnimationの使用時にAndroidがアニメーションをどのように実行するか知っていますか? TranslateAnimationは、アニメーション中にル・ビューを拡大縮小しません... – Jul

1

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

@Override 
    public void onAnimationEnd(Animation animation) 
    { 

    //Just set the layout params for your view (layout) which is animated, 
    //to make yout 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); 

    } 

で、私はそれは私がしてきたアニメーション

0

後にビューを移動させることがどのように人々を明確に願っていますこの数時間前にも私の頭を掻き回しています。 は、両方の反対の余白を変更する場合は、ReleativeLayout内部ビューがリサイズされることはありませんも動き回ることが判明:

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

これはクレイジーですが、それが動作する...

関連する問題