您好我正在开发Android应用程序,我在其中创建相对布局编程并尝试设置边距并将其添加到具有方向线性的线性布局中。 所以这是我的代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/screen_background"
tools:context=".ChooseChannelsFragment" >
<LinearLayout
android:id="@+id/main_outer_llt"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
>
</LinearLayout>
</RelativeLayout>
和内部片段我正在添加像这样的相对布局
RelativeLayout relativeLayout = new RelativeLayout(getActivity());
RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(200, 80);
relativeParams.setMargins(20, 20, 20, 20);
relativeLayout.setLayoutParams(relativeParams);
relativeLayout.setBackgroundColor(getResources().getColor(R.color.green_color));
linearLayout.addView(relativeLayout);
它创建具有给定颜色和大小但不接受边距的布局。难道我做错了什么?这该怎么做?需要帮忙。谢谢。
答案 0 :(得分:8)
您在视图上使用的LayoutParams类型实际上应来自其父级。
因此,如果您将RelativeLayout添加到LinearLayout,则设置为RelativeLayout的LayoutParams实际上应该是LinearLayout.LayourParams,而不是RelativeLayout.LayoutParams。
答案 1 :(得分:2)
正如其他人所说,layout_margin#是父&#s#edge和你的观点之间的空格。
获取/设置边距对我有用:
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams();
params.topMargin += 20;
mView.requestLayout(); // important
当然,我的View确实是一个ViewGroup,父也是一个ViewGroup。在大多数情况下,您应该将布局参数转换为父级的View类LayoutParams(在本例中为ViewGroup和RelativeLayout)
答案 2 :(得分:0)
在这种情况下,父亲是LinearLayout。所以你应该使用:
TableLayout.LayoutParams layoutParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(20, 20, 20, 20);