2013-08-17 5 views
10

LinearLayout에 음수의 왼쪽 여백을 주려고하면 문제가 발생했습니다.
음수 여백이 표시되지 않습니다.
여기 내 코드안드로이드 음수 여백이 작동하지 않습니다

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)으로 스크롤하여 설명한 "엿보기 및 스크롤"효과를 얻는 것입니다.

실제 픽셀 크기는 화면의 픽셀 밀도에 따라 달라 지므로 원시 픽셀 단위를 사용하는 것은 일반적으로 바람직하지 않습니다. 대신 dp 측정을 선호하십시오.

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

답변을 편집 할 수 있습니까? 그것이 어떻게 문제를 해결하는지에 대한 설명. –

관련 문제