我希望有两个LinearLayouts,每个都有一些边距。下面的布局效果很好。
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="5dp"
android:background="@drawable/border_style">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Uday"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_margin="5dp"
android:background="@drawable/border_style">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="ABCD"/>
</LinearLayout>
</GridLayout>
现在我想以编程方式进行,因为textview值是动态的 我尝试使用LayoutParameters的 setMargins ,但没有用。我在循环中尝试了下面的代码,但是我无法看到以边距分隔的布局。
LinearLayout lLayour = new LinearLayout(getActivity());
lLayour.setOrientation(LinearLayout.VERTICAL);
lLayour.setBackgroundResource(R.drawable.border_style);
LinearLayout.LayoutParams llLP=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
llLP.setMargins(5,5,5,5);
lLayour.setLayoutParams(llLP);
TextView tv=new TextView(getActivity());
tv.setText("1");
tv.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
lLayour.addView(tv);
gridLayout.addView(lLayour);
后来才知道 MarginLayoutParams ,但仍然没有帮助:
LinearLayout lLayour = new LinearLayout(getActivity());
lLayour.setOrientation(LinearLayout.VERTICAL);
lLayour.setBackgroundResource(R.drawable.border_style);
LinearLayout.LayoutParams llLP=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
lLayour.setLayoutParams(llLP);
setMargins(lLayour, 50, 50, 50, 50);
TextView tv=new TextView(getActivity());
tv.setText("1");
tv.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
lLayour.addView(tv);
gridLayout.addView(lLayour);
private void setMargins (View view, int left, int top, int right, int bottom) {
if (view.getLayoutParams() instanceof LinearLayout.MarginLayoutParams) {
LinearLayout.MarginLayoutParams p = (LinearLayout.MarginLayoutParams) view.getLayoutParams();
p.setMargins(left, top, right, bottom);
view.requestLayout();
}
}
我的border_style.xml文件内容是:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<stroke android:width="2dp" android:color="#44aa77"/>
<solid android:color="#ffffff" />
<padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp"/>
</shape>
答案 0 :(得分:0)
根据提到的详细信息,如果LinearLayout
未占用边距,您也可以尝试添加padding
而不是margins
。
以下是以编程方式将填充设置为LinearLayout
的代码:
mLinearLayout.setPadding(20,20,20,20);