2013-06-15 1 views
0

У меня есть несколько горизонтальных линейных макетов. В каждом из этих макетов, которые перечислены вертикально, у меня есть 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> 
+0

Я думаю, использование relativeLayout будет лучшим вариантом – Charlie

+0

Возможно, но я хочу сделать это таким образом сейчас ... Я думаю, что мне нужно остаться с этой проблемой – Anas

ответ

1

Создайте стиль в 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" 


EDIT: В случае, когда ваш parent ориентирован по горизонтали, вы не можете применять маркер относительно вашего родителя.

Пробуйте использовать layout:weight. Например, если вы хотите, чтобы ваш EditText начинался с половины его родителя, и у вас есть общее представление 2 в вашем родителе, включая EditText, тогда установите layout:weight обоих представлений, скажем, 0.5. Это дает обе точки зрения равное пространство в родительском.

Это будет работать только в том случае, если все LinearLayouts, где вы хотите внести изменения, содержат равные нет. взглядов. Если для разных LinearLayout содержит разные значения. взглядов, то вы не можете использовать стиль или нет возможности сделать изменения из одного места.

Примечание: Используя свойство layout:weight, вы не можете получить статическое значение маржи. Он зависит от размера вашего родителя и может варьироваться в зависимости от размера экрана.

+0

Да, вы правы, но проблема в том, что я хочу дают постоянный запас для всего EditText относительно родительского макета, однако этот способ его выполнения дает левое поле wtr для TextView, предшествующее EditText. – Anas

+0

@ user2254838 Маржа всегда относится к ее родительскому виду. Вы можете что-то делать неправильно. Пожалуйста, разместите свой код, чтобы я мог его изучить. – Geek

+0

Я только что редактировал свой первоначальный пост, чтобы дать частичный код. Теперь EditText после TextView получает поле 30dp, но wtr TextView – Anas

Смежные вопросы