Как установить marginTop на LinearLayout с Java для Android? - PullRequest
1 голос
/ 12 января 2012

Я пытаюсь установить marginTop для LinearLayout с Java для моего приложения для Android.Я продолжаю получать «силовые выходы» все время.Это мой код:

    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)

Спасибо!

Ответы [ 3 ]

2 голосов
/ 13 мая 2014

Используйте код ниже

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

Спасибо!

1 голос
/ 12 января 2012

Измените LayoutParams на LinearLayout.LayoutParams и lp.setMargins(0, top, 0, 0);. Также укажите единицу для ваших наценок, например: dp, px.

0 голосов
/ 21 января 2013

Чтобы указать единицу измерения дп Вы можете:

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