2012-01-12 9 views
1

私は、Androidアプリの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); 

私は間違っていますか?

これは私が私のlogcatで得るものです:

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.LayoutParamsおよびlp.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); 

を使用してくださいありがとう!

関連する問題