2013-07-01 7 views
0

Я хотел бы centerHorizontal в RelativeLayout в ScrollView, как это: good layoutcenterHorizontal RelativeLayout в ScrollView

Я могу только достичь этого макета при использовании RelativeLayout. Но так как мне также нужно использовать ScrollView, это испортится. Как-то android:layout_centerHorizontal="true" не будет применяться для RelativeLayout то ... Вывод выглядит следующим образом:

bad layout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#ffcc33" 
android:paddingLeft="7dp" 
android:paddingRight="7dp" 
android:paddingTop="10dp" 
tools:context=".MainActivity" > 

<EditText 
    android:id="@+id/search_box" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_toLeftOf="@+id/search_button" 
    android:ems="5" 
    android:hint="@string/search_hint" > 

    <requestFocus /> 
</EditText> 

<Button 
    android:id="@+id/search_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:text="@string/search_button" /> 

<ScrollView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@+id/search_box" 
    android:layout_marginTop="15dp" 
    > 

<RelativeLayout 
    android:layout_width="225dp" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" > 

    <Button 
     android:id="@+id/btn_lihatoidud" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@android:color/transparent" 
     android:drawableTop="@drawable/lihatoidud" 
     android:layout_alignParentTop="true" 
     android:text="Lihatoidud" 
     android:textSize="18sp" /> 

    <Button 
     android:id="@+id/btn_kypsetised" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/btn_lihatoidud" 
     android:layout_marginTop="15dp" 
     android:background="@android:color/transparent" 
     android:drawableTop="@drawable/kypsetised" 
     android:text="Küpsetised" 
     android:textSize="18sp" /> 

    <Button 
     android:id="@+id/btn_seenetoidud" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/btn_kypsetised" 
     android:layout_marginTop="15dp" 
     android:background="@android:color/transparent" 
     android:drawableTop="@drawable/seenetoidud" 
     android:text="Seenetoidud" 
     android:textSize="18sp" /> 

    <Button 
     android:id="@+id/btn_juustutoidud" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/btn_seenetoidud" 
     android:layout_marginTop="15dp" 
     android:background="@android:color/transparent" 
     android:drawableTop="@drawable/juustutoidud" 
     android:text="Juustutoidud" 
     android:textSize="18sp" /> 

    <Button 
     android:id="@+id/btn_lisandid" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/btn_juustutoidud" 
     android:layout_marginTop="15dp" 
     android:background="@android:color/transparent" 
     android:drawableTop="@drawable/lisandid" 
     android:text="Lisandid" 
     android:textSize="18sp" /> 

    <Button 
     android:id="@+id/btn_supid" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:background="@android:color/transparent" 
     android:drawableTop="@drawable/supid" 
     android:text="Supid" 
     android:textSize="18sp" /> 

    <Button 
     android:id="@+id/btn_voileivad" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/btn_supid" 
     android:layout_marginTop="15dp" 
     android:background="@android:color/transparent" 
     android:drawableTop="@drawable/voileivad" 
     android:text="Võileivad" 
     android:textSize="18sp" /> 

    <Button 
     android:id="@+id/btn_pudrud" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/btn_voileivad" 
     android:layout_marginTop="15dp" 
     android:background="@android:color/transparent" 
     android:drawableTop="@drawable/pudrud" 
     android:text="Pudrud" 
     android:textSize="18sp" /> 

    <Button 
     android:id="@+id/btn_joogid" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/btn_pudrud" 
     android:layout_marginTop="15dp" 
     android:background="@android:color/transparent" 
     android:drawableTop="@drawable/joogid" 
     android:text="Joogid" 
     android:textSize="18sp" /> 

</RelativeLayout> 
</ScrollView> 

ответ

0

Вы пробовали использовать гравитацию? Попробуйте следующее:

android:layout_gravity="center" 

внутри вашего RelativeLayout.

android:gravity="center" 

также может работать. Я всегда забываю, что делает.

+0

[ Разница между андроидом: гравюра и андроид: layout_gravity] (http://stackoverflow.com/a/3482757/ 312312) – codeMagic

+0

Хорошо, с одной стороны layout_gravity соответствует моим потребностям. С другой стороны, он растягивал RelativeLayout, поэтому он скрывается за представлением EditText. Есть идеи? – swenn

+0

Какой RelativeLayout вы вкладывали в гравитацию? Я не уверен, но похоже, что вы помещаете его в общий макет, а не в макет ребенка. – user2483079

1

Комментарий Wouldnt позвольте мне формат ...

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

<LinearLayout 
    ...android:orientation="vertical"> 

    <LinearLayout 
     ...android:orentation="horizontal"> 
     <Edit Text> 
     <Button> 
    /> 
    <ScrollView 
     ...> 
     <RelativeLayout 
      ..../> 
    /> 
/> 
+0

У вашего метода была такая же проблема. В конце концов я добавил один LinearLayout между ScrollView и RelativeLayout. Это сработало хорошо! – swenn

1

A ScrollView разрушится его содержимое до размера ядра, если не указано иное. Попробуйте вещи:

  1. Явное запирать стороны ScrollView на позиции в верхней RelativeLayout с помощью

    android:layout_below="@id/search_box" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentBottom="true" 
    
  2. Принудительно ScrollView не разрушаться:

    android:fillViewport="true" 
    
Смежные вопросы