Установите поле LinearLayout внутри RealtiveLayout программно - не работает

В моем приложении я использую фрагменты (вкладки), и когда я пытаюсь установить поле LinearLayout макета фрагмента, это не работает.

В моем макете есть RelativeLayout

...
<RelativeLayout
     android:id="@+id/calendar_activities"
     android:layout_width="fill_parent"
     android:layout_height="match_parent"
     android:layout_marginLeft="10dp">
</RelativeLayout>
...

Мой фрагмент:

public class FragmentTabSchedule extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragmenttab1, container, false);

        RelativeLayout rl = (RelativeLayout) view.findViewById(R.id.calendar_activities);

        LinearLayout ll = new LinearLayout(inflater.getContext());
        ll.setOrientation(LinearLayout.VERTICAL);
        //ll.setPadding(60, 60, 60, 60);

        Resources r = inflater.getContext().getResources();

        int h = (int) TypedValue.applyDimension(
                TypedValue.COMPLEX_UNIT_DIP,
                60, 
                r.getDisplayMetrics()
        );

        LayoutParams params = new LayoutParams(
                LayoutParams.MATCH_PARENT,      
                h
        );
        params.setMargins(60, 60, 60, 60);
        ll.setLayoutParams(params);

        ll.setBackgroundColor(getResources().getColor(R.color.yellow));

        TextView act = new TextView(inflater.getContext());

        act.setText("Activity test");
        ll.addView(act);

        rl.addView(ll);



        return view;
    }

}

Linearlayout создан правильно, единственное, что не работает, - это поля (уже пробовали заполнение, но безуспешно). Макет размещен с нулевым запасом.

Когда я пытаюсь создать код прямо в файле xml, он работает

       <RelativeLayout 
            android:id="@+id/calendar_activities"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="10dp">

            <LinearLayout 
                android:layout_width="fill_parent"
                android:layout_height="60dp"
                android:orientation="vertical"
                android:layout_marginTop="120dp"
                android:background="@color/blue">

                <TextView 
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="test"/>

            </LinearLayout>

        </RelativeLayout>

person MiguelDuque    schedule 01.09.2014    source источник
comment
Вместо использования LayoutParams попробуйте использовать RelativeLayout.LayoutParams ...   -  person maaz    schedule 01.09.2014
comment
Да, спасибо @maaz, сработало   -  person MiguelDuque    schedule 01.09.2014
comment
Я отправил ответ, примите его, пожалуйста   -  person maaz    schedule 01.09.2014


Ответы (1)


То, как это работает, - это параметры макета, которые следует использовать, должны быть от его родителя ...

В вашем случае LinearLayout находился внутри RelativeLayout, поэтому для этой цели следует использовать RelativeLayout.LayoutParams

person maaz    schedule 01.09.2014