如何为所有视图提供恒定的左边距?

时间:2013-06-15 16:58:41

标签: android views

我有多个水平线性布局。在垂直列出的每个布局中,我有一个TextView后跟一个EditText。我想为所有EditText视图提供一个恒定的左边距,以便它们对齐,我该如何实现呢?这是部分代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="5dp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp"
    android:paddingTop="5dp" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/pNameL"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="Segoe ui"
            android:text="Name"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <EditText
            android:id="@+id/editText2"
            style="@style/editText_style"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10" >
        </EditText>

    </LinearLayout>

1 个答案:

答案 0 :(得分:2)

在res / values / style.xml文件中创建样式。如果style.xml不存在则创建一个新的。

<style name="editText_style">
    <item name="android:layout_marginLeft">30dp</item>
    <item name="android:layout_marginRight">30dp</item>
</style>

然后在<EditText>标记下的布局文件中(您要在其中更改边距),使用以下方式应用此样式:

style="@style/editText_style"


编辑:如果您的父级是横向的,则无法相对于父级应用保证金。

请尝试使用layout:weight属性。例如,如果您希望EditText从其父级的一半开始,并且您的父级中包含EditText的总共2个视图,则将两个视图的layout:weight设置为,例如,0.5。这使得两个视图在其父级中等于空格。

仅当您想要进行更改的所有LinearLayouts包含相等的否时,此方法才有效。观点。如果不同的LinearLayout包含不同的号码。视图然后你不能使用样式或没有办法从单个地方进行更改。

注意:使用layout:weight属性无法获取静态边距值。它取决于您的父母大小,并且可能因屏幕大小而异。