2013-08-16 7 views
0

Я создал кнопку и edittext по относительной компоновке. Я центрировал выравнивание объектов, которые я сделал на экране Nexus S, но это не выглядит так, как я предполагал, чтобы он находился на других размерах экрана.Android: выравнивание компоновки на разных размерах экрана

Это мой код и ссылка на изображение http://flic.kr/p/fuYgdf я не имею 10 очков репутации размещать изображения:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:gravity="center" 
android:orientation="vertical" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
    android:background= "@drawable/chalk" 
tools:context=".MainActivity" > 

<Button 
    android:id="@+id/button1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/password" 
    android:layout_alignParentBottom="true" 
    android:layout_marginBottom="80dp" 
    android:background="@android:color/transparent" 
    android:gravity="center" 
    android:onClick="login" 
    android:text="Login" 
    android:textStyle="bold" /> 

<EditText 
    android:id="@+id/password" 
    android:layout_width="300dp" 
    android:layout_height="100dp" 
    android:layout_above="@+id/button1" 
    android:layout_alignLeft="@+id/username" 
    android:layout_marginBottom="40dp" 
    android:layout_weight="0.03" 
    android:background = "@android:color/transparent" 
    android:ems="10" 
    android:gravity="center" 
    android:hint="password" 
    android:inputType="textPassword" 
    android:singleLine="true" /> 

<EditText 
    android:id="@+id/username" 
    android:layout_width="300dp" 
    android:layout_height="90dp" 
    android:layout_alignBottom="@+id/password" 
     android:background = "@android:color/transparent" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="78dp" 
    android:layout_weight="10.04" 
    android:ems="10" 
    android:gravity="center" 
    android:hint="username" 
    android:singleLine="true" > 

    <requestFocus /> 
</EditText> 

Так в основном, я хочу, чтобы сделать их выравнивание по центру листа в любом экране. Как я могу это сделать?

+0

Вы хотите сделать их Центром только ??? –

+0

yes Sir @ArmaanStranger Я хочу, чтобы макет был центрирован для всех размеров экрана, если бы вы видели изображение? Пожалуйста, помогите мне, как я могу это сделать? Спасибо! – Chad

+0

По-моему, для экрана, подобного этому, используйте LinearLayout. Это будет намного проще. Но если вы хотите придерживаться RelativeLayout, не выравнивайте друг друга влево или вправо. Используйте android: layout_centerHorizontal = "true" для каждого ребенка –

ответ

0

Попробуйте ::

Я использовал этот код в моем приложении и его работа большой.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/linearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_centerInParent="true" 
    android:gravity="center" 
    android:orientation="vertical" 
    android:paddingTop="20dp" 
    android:paddingLeft="20dp" 
    android:paddingRight="20dp" 
    android:paddingBottom="10dp" > 


    <EditText 
     android:id="@+id/etEmail" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:hint="Email" 
     android:inputType="textEmailAddress" 
     android:layout_marginTop="10dp" > 

     <requestFocus /> 
    </EditText> 

    <EditText 
     android:id="@+id/etPassword" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:hint="Password" 
     android:inputType="textPassword" /> 

    <Button 
    android:id="@+id/btnSend" 
    style="?android:attr/buttonStyleSmall" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_marginTop="10dp" 
    android:text="Login" /> 
</LinearLayout> 

Надеюсь, что это поможет!

+0

Sir @Armaan Stranger Я пробовал! Он центрирован, но кнопка и edittext должны быть маленькими для размера экрана, такого как nexus 10, посмотрите на это http://flic.kr/p/fvwy2J – Chad

+0

Вы не можете сделать это по экрану. Я думаю, вам нужно изменить параметры макета элементов управления, когда есть большой экран. поэтому я думаю, проверю его, когда приложение загружается и задает параметры макета программно. –

+0

вы должны создать разный макет для больших экранов. эта ссылка поможет вам в этом. http://developer.android.com/guide/practices/screens_support.html –

0
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:gravity="center" 
android:layout_gravity="center" 
android:orientation="vertical" 
android:padding="5dp" 
android:background= "@drawable/chalk" 
> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@android:color/transparent" 
    android:gravity="center" 
    android:layout_gravity="center" 
    android:onClick="login" 
    android:text="Login" 
    android:textStyle="bold" /> 

<EditText 
    android:id="@+id/password" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background = "@android:color/transparent" 
    android:ems="10" 
    android:gravity="center" 
    android:layout_gravity="center" 
    android:layout_marginTop="30dp" 
    android:hint="password" 
    android:inputType="textPassword" 
    android:singleLine="true" /> 

<EditText 
    android:id="@+id/username" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
     android:background = "@android:color/transparent" 
    android:ems="10" 
    android:gravity="center" 
    android:layout_gravity="center" 
    android:layout_marginTop="30dp" 
    android:hint="username" 
    android:singleLine="true" > 

    <requestFocus /> 
</EditText> 
</LinearLayout> 
+0

Сэр @Hari ваш код работал, спасибо, но я заметил, что edittext и кнопки имеют малый размер экрана, такой как nexus 10, который огромен. Как я могу сделать это подходящим огромный размер экрана нексуса 10? – Chad

+0

даже на этих экранах будет иметь желаемое количество высоты. Так что вам не о чем беспокоиться! – Hariharan

+0

проверьте ширину и размер edittext и кнопок, если вы упомянули какой-то размер, измените его на WRAP_CONTENT. я думаю, это ваше решение. – AndroUser