我最近又遇到了一个问题,那就是我在过去几年已经好几次了。
LinearLayout
非常方便layout manager
。但我完全错过的是在单个XML标记中添加元素之间的某个空间(如填充)的可能性。
我的意思是,我可以在LinearLayout的声明中定义元素之间的间距(例如,在垂直LinearLayout中,这个布局中两个元素之间的垂直空间)。
我知道我可以通过添加XML标记android:layout_marginTop
或类似于LinearLayout中每个元素的内容来实现。
但我希望能够只在一个点上定义它,因为所有元素的间距都是相同的。
有没有人知道一个简单的方法(没有实现自定义LinearLayout或类似的东西)?我更喜欢直接在XML中工作而无需编码的解决方案。
答案 0 :(得分:18)
建议的方法是将样式应用于线性布局中的所有元素
android:style="@style/mystyle"
<style name="mystyle">
<item name="android:layout_marginTop">10dp</item>
... other things that your elements have in common
</style>
答案 1 :(得分:5)
将自定义透明drawable设置为布局的分隔符:
<LinearLayout
android:showDividers="middle"
android:divider="@drawable/divider">
drawables文件夹(divider.xml)中的新drawable资源:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android = "http://schemas.android.com/apk/res/android">
<size
android:width = "0dp"
android:height = "16dp"/>
</shape>
答案 2 :(得分:1)
@ Chris-Tulip的答案对我很有帮助 - 也有良好的做法。
对于那些可能会收到关于错过&#34; Style&#34;的资源标识符的Eclipse错误的人。在包android中,就像我一样,你不需要添加android命名空间。
所以, 机器人:式=&#34; XX&#34;提出错误,而style =&#34; xx&#34;是正确的。时髦,但对于任何有错误的人来说,这可能会有所帮助。
答案 3 :(得分:0)
您可以在单独的xml文件中定义单个项目“prototype”,然后在代码中动态扩充该文件中的项目,并将它们插入到线性布局中。
然后,您可以在实际项目上定义间距,而不是父线性阵列(例如,android:layout_marginTop
),并且当您向它们充气时,该间距将应用于您的所有项目。
<强> 编辑: 强>
container.xml中:
<LinearLayout
android:id="@+id/parent"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- Your items will be added here -->
</LinearLayout>
item.xml:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This is my child" />
</LinearLayout>
MyActivity.java:
// Put this in a suitable place in your Java code, perhaps
// in "onCreate" or "onResume" depending on where and how
// you initialize your view. You can, of course inflate
// any number of instances of the item and add them to
// your parent LinearLayout.
LayoutInflater inflater = LayoutInflater.from(context);
View item = inflater.inflate(R.layout.item, null, false);
LinearLayout container = findViewById(R.id.parent);
container.addView(view);
我没有努力测试代码,但它“应该”按原样工作: - )
答案 4 :(得分:0)
您应该将android:layout_marginTop
或android:layout_marginLeft
添加到必须缩进的元素中。取决于android:orientation
的{{1}}。