2012-01-12 3 views
1

안드로이드 애플 리케이션을 위해 java로 LinearLayout의 marginTop을 설정하려고합니다. 나는 항상 "강제 종료"를 계속합니다. 내 코드 :Android 용 Java를 사용하여 LinearLayout에서 marginTop을 설정하는 방법은 무엇입니까?

LinearLayout lay = (LinearLayout) findViewById(R.id.linearLayout1); 
    LayoutParams lp = lay.getLayoutParams(); 
    lp.setMargins(10, 20, 30, 40); 
    lay.setLayoutParams(lp); 

내가 뭘 잘못하고 있니?

이 내가 내 로그 캣에서 무엇을 얻을 수 있습니다 :

01-12 18:50:16.237: D/AndroidRuntime(482): Shutting down VM 
01-12 18:50:16.237: W/dalvikvm(482): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 
01-12 18:50:16.237: E/AndroidRuntime(482): Uncaught handler: thread main exiting due to uncaught exception 
01-12 18:50:16.247: E/AndroidRuntime(482): java.lang.RuntimeException: Unable to start activity ComponentInfo{nu.katterevyn/nu.katterevyn.StartActivity}: java.lang.NullPointerException 
01-12 18:50:16.247: E/AndroidRuntime(482): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
01-12 18:50:16.247: E/AndroidRuntime(482): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
01-12 18:50:16.247: E/AndroidRuntime(482): at android.app.ActivityThread.access$2200(ActivityThread.java:119) 

감사합니다!

+1

logcat stack trace를 게시하십시오. – kosa

답변

1

LayoutParams에서 LinearLayout.LayoutParamslp.setMargins(0, top, 0, 0);으로 변경하십시오. 또한 여백 단위를 지정하십시오 (예 : dp, px).

+0

단위는 어떻게 지정합니까? – AlexanderNajafi

+0

죄송합니다. 단위를 지정하지 않아도됩니다. 기본적으로 문서의 http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html#setMargins(int, int, int, int) – mauriyouth

+0

알았어, 고마워. 하지만 getLayoutParams()는 LinearLayout.LayoutParams로 변환 할 수 없으며 코드를 실행할 수도 없습니다. 이것은 내가 가지고있는 것입니다 : LinearLayout lay = (LinearLayout) findViewById (R.id.linearLayout1); \t \t LinearLayout.LayoutParams lp = lay.getLayoutParams(); – AlexanderNajafi

0

당신이 할 수있는 DP하는 단위를 지정하려면 :

DisplayMetrics metrics = new DisplayMetrics(); 
a.getWindowManager().getDefaultDisplay().getMetrics(metrics); 
return (size * metrics.densityDpi)/DisplayMetrics.DENSITY_DEFAULT; 
2

를 사용하여 아래의 코드

LinearLayout lay = (LinearLayout) findViewById(R.id.linearLayout1); 
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)lay.getLayoutParams(); 
lp.setMargins(10, 20, 30, 40); 
lay.setLayoutParams(lp); 

감사합니다!

관련 문제