在Android中,如何在LinearLayout子元素之间创build空间?
我正在编程添加自定义视图到一个垂直的LinearLayout,我希望有一些空间之间的意见。 我曾尝试添加:setPadding(0,1,0,1)到我的CustomView构造函数,但这似乎没有任何效果。 有什么build议?
*有人指出,我应该使用利润。 由于我dynamic添加视图,我需要从代码(而不是xml)设置边距。 我相信这样做的方式是在下面,但它不工作。
public class MyView extends View { public MyView (Context context) { super(context); MarginLayoutParams params = new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.setMargins(0, 10, 0, 10); setLayoutParams(params);
*编辑。 我也尝试使用MarginLayoutParams作为参数,同时将视图添加到线性布局(如下所示)。 这也没有工作:
MarginLayoutParams params = new MarginLayoutParams(linearLayout.getLayoutParams()); linearLayout.setMargins(0, 10, 0, 10); linearLayout.addView(view, params);
谢谢。
您应该在子android:layout_margin<Side>
上使用android:layout_margin<Side>
。 填充是内部的。
API> = 11解决scheme:
您可以将填充整合到分隔符中。 如果你没有使用,只需创build一个高空的drawable并将其设置为LinearLayout
的分隔符:
<LinearLayout android:showDividers="middle" android:divider="@drawable/empty_tall_divider" ...>...</LinearLayout>
empty_tall_divider.xml:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <size android:height="40dp" android:width="0dp"/> </shape>
Android现在支持在视图之间添加空间视图。 它从4.0 ICS起可用。
下面的示例只是以您需要的方式进行编程。 我用了一个固定的大小(140,398)。
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(140, 398); layoutParams.setMargins(24, 0, 24, 0); layout.addView(button,layoutParams);
使用LinearLayout.LayoutParams
而不是MarginLayoutParams
。 这里是文档。
如果您使用ActionBarSherlock ,则可以使用com.actionbarsherlock.internal.widget.IcsLinearLayout:
<com.actionbarsherlock.internal.widget.IcsLinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@drawable/list_view_divider" android:dividerPadding="2dp" android:showDividers="middle" > ... </com.actionbarsherlock.internal.widget.IcsLinearLayout>
在子视图的布局中使用填充。
layout.xml
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:background="@drawable/backage_text" android:textColor="#999999" > </TextView>
backage_text.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/white"/> <corners android:radius="2dp"/> <stroke android:width="1dp" android:color="#999999"/> <padding android:bottom="5dp" android:left="10dp" android:right="10dp" android:top="5dp" /> </shape>
你可以得到父LinearLayout
的LayoutParams
,并以这种方式应用于各个视图:
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); lp.setMargins(8,8,8,8);
- 请注意,setMargins()将像素作为int数据types。因此,在添加值之前将其转换为dp
- 上面的代码将高度和宽度设置为wrap_content。 你可以自定义它。
由于API级别14,你可以添加一个(透明的)分隔符drawable:
android:divider="@drawable/divider" android:showDividers="middle"
它会为你处理剩下的事情!
- 微调onItemSelected()执行不当
- Android studio:为什么在AndroidManifest.xml和build.gradle中都指定了minSdkVersion和targetSdkVersion?
- SharedPreferences文件
- Android的错误
- 如何显示Android棉花糖Google地图上的当前位置?
- 在android studio中由colorpid彩色logcat
- 当Realm在NotificationListenerService中更新时,RealmChangeListener不会被调用
- Android SDK文件夹占用大量磁盘空间。 我们是否需要保留所有的系统映像?
- 当debugging代码块完成时,Android应用程序closures