【问题标题】:Set margin of a LinearLayout inside a RealtiveLayout programmatically- not working以编程方式在 RealtiveLayout 中设置 LinearLayout 的边距 - 不起作用
【发布时间】:2014-10-25 23:35:10
【问题描述】:

在我的应用程序中,我正在使用片段(选项卡),当我尝试设置片段布局的 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 已正确创建,唯一不起作用的是边距(已尝试填充但没有成功)。布局以 0 边距放置。

当我尝试直接在 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>

【问题讨论】:

  • 不要使用 LayoutParams 尝试使用 RelativeLayout.LayoutParams ...
  • 是的,谢谢@maaz,它成功了
  • 我已经发布了答案,请采纳

标签: android android-linearlayout android-relativelayout margin


【解决方案1】:

它的工作方式是应该使用的布局参数应该来自其父级......

在您的情况下,LinearLayout 在 RelativeLayout 内,因此,应该使用 RelativeLayout.LayoutParams 来达到目的

【讨论】:

    猜你喜欢
    • 2011-01-29
    • 2017-01-17
    • 1970-01-01
    • 2023-03-15
    • 2011-12-27
    • 2017-08-23
    • 2011-06-22
    • 2015-08-22
    • 2019-10-19
    相关资源
    最近更新 更多