以编程方式在 RealtiveLayout 中设置 LinearLayout 的边距 - 不起作用
Posted
技术标签:
【中文标题】以编程方式在 RealtiveLayout 中设置 LinearLayout 的边距 - 不起作用【英文标题】:Set margin of a LinearLayout inside a RealtiveLayout programmatically- not working 【发布时间】:2014-10-25 23:35:10 【问题描述】:在我的应用程序中,我正在使用片段(选项卡),当我尝试设置片段布局的 LinearLayout 的边距时,它不起作用。
我的布局有这个 RelativeLayout
...
<RelativeLayout
android:id="@+id/calendar_activities"
android:layout_
android:layout_
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_
android:layout_
android:layout_marginLeft="10dp">
<LinearLayout
android:layout_
android:layout_
android:orientation="vertical"
android:layout_marginTop="120dp"
android:background="@color/blue">
<TextView
android:layout_
android:layout_
android:text="test"/>
</LinearLayout>
</RelativeLayout>
【问题讨论】:
不要使用 LayoutParams 尝试使用 RelativeLayout.LayoutParams ... 是的,谢谢@maaz,它成功了 我已经发布了答案,请采纳 【参考方案1】:它的工作方式是应该使用的布局参数应该来自其父级......
在您的情况下,LinearLayout 在 RelativeLayout 内,因此,应该使用 RelativeLayout.LayoutParams 来达到目的
【讨论】:
以上是关于以编程方式在 RealtiveLayout 中设置 LinearLayout 的边距 - 不起作用的主要内容,如果未能解决你的问题,请参考以下文章