2013-08-17 29 views
10

LinearLayoutに負の左マージンを与えようとすると問題が発生しました。
負のマージンは表示されません。
は、ここに私のコードAndroidのマイナスマージンが機能しない

HorizontalScrollView hview = new HorizontalScrollView(context); // HorizontalScrollView is the outer view 
RelativeLayout.LayoutParams hs_lot_params = new RelativeLayout.LayoutParams(164, 164); 
hs_lot_params.setMargins(100, 100, 0, 0); // set the positions 

ImageView image = new ImageView(context); 
image.setBackgroundResource(R.drawable.leder); 
LinearLayout.LayoutParams img_lot_params = new LinearLayout.LayoutParams(164, 164); 
img_lot_params.setMargins(0, 0, 0, 0); 

LinearLayout ll = new LinearLayout(this); 
ll.setOrientation(LinearLayout.VERTICAL); 
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(164, 164); 
layoutParams.setMargins(-132, 0, 0, 0); 
ll.addView(image, img_lot_params); 
hview.addView(ll, layoutParams); 

。注:私の計画は、左から右へ画像をスクロールすることです。
まず、画像の左部分が隠されていると、完全な画像を見るために右にスクロールすることができます

+2

理由は、Android SDKの以前のバージョンでは、マイナスの余白が許可されていたからです(最大2.2?)。 –

+1

負のマージンを使用せずにAbsoluteLayoutを置き換える方法は? –

+3

'translationX'を使用してください。 – nhaarman

答えて

0

負のマージンはLinearLayoutRelativeLayoutで動作するはずです。あなたが必要と思われるのは、scrollBy(int x, int y)またはscrollTo(int x, int y)HorizontalScrollViewをスクロールして、説明した "覗き見とスクロール"効果を達成することです。

また、実際のサイズは画面のピクセル密度に依存するため、生のピクセル単位を使用することは一般的には好ましくありません。代わりにdpの測定値を使用することをお勧めします。

0
ViewGroup.MarginLayoutParams params = 
(ViewGroup.MarginLayoutParams)view.getLayoutParams(); params.topMargin = -100; 
+0

それがどのように問題を解決するのか説明。 –