2011-01-28 3 views
1

в моем проекте у меня есть вид с 4 кнопками. У меня есть относительный макет, чтобы правильно разместить их. Дело в том, что я хочу, чтобы кнопки заполняли весь экран, не исчезая, и я не хочу устанавливать для них фиксированный размер, чтобы гарантировать, что кнопки будут соответствовать любому размеру экрана. Прямо сейчас единственное, что я вижу, это одна большая кнопка, потому что RelativeLayout не имеет android:layout_weight. Как я могу это сделать? Вот что я получил:Кнопка изменения размера проблемы. Android

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

      <Button 
       android:id="@+id/search_icon" 
       android:background="@drawable/search_icon" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       /> 

      <Button 
       android:id="@+id/categories_icon" 
       android:background="@drawable/categories" 
       android:layout_toRightOf="@+id/search_icon" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       /> 

      <Button 
       android:id="@+id/green_icon" 
       android:background="@drawable/green_icon" 
       android:layout_below="@+id/search_icon" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       /> 

      <Button 
       android:id="@+id/red_icon" 
       android:background="@drawable/red_icon" 
       android:layout_toRightOf="@+id/green_icon" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       /> 

    </RelativeLayout> 

ответ

2

Ну, это кажется проще, чем я думал ... Я думаю, что вы ищете это:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" 
    android:layout_> 

    <Button android:id="@+id/button1" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:text="1" /> 

    <Button android:id="@+id/button2" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:text="2" /> 
</LinearLayout> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" > 

    <Button android:id="@+id/button3" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:text="3" /> 

    <Button android:id="@+id/button4" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_weight="1" 
     android:text="4" /> 
</LinearLayout> 

Попробуйте, это должно выглядеть так:

Android screen with 4 buttons

+0

Ницца, это сработало, что было трюком? Значки деформированы, но я думаю, что я должен получить размер экрана и поместить значки программно, не так ли? Спасибо за ответ!! –

+0

Не было никакого трюка, просто проб и ошибок ... Интерфейсы Android немного сложны, и иногда вам просто нужно протестировать различные макеты, чтобы увидеть лучший. О значках, я не могу вам помочь ...Я до сих пор не использовал его. Но, как и макеты, вы попадаете туда с проб и ошибок. – gnclmorais

+0

Хорошо, спасибо, что нашли время, чтобы помочь. Я очень ценю это. Хорошего дня. –

0

Дело о RelativeLayout в том, что вы должны сказать, где поставить itens. Пример:

<Button android:id="@+id/buyTicket" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Buy ticket" 
    android:layout_above="@id/LinearLayout02" /> 

<ImageView android:id="@+id/logo" 
    android:src="@drawable/logo" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@id/buyTicket" /> 

Обратите внимание на андроид: layout_above = "@ идентификатор/buyTicket". Если вы хотите, чтобы кнопка A была сверху кнопки B, вы сначала объявляете кнопку A (например), выровняете ее вверху родителя, а затем в объявлении кнопки B, вы говорите, что хотите ее под кнопкой A.

В вашем случае вам нужно объявить кнопки A, B, C и D, а затем установить android:layout_alignParentTop="true" в кнопку A, а затем установить android:layout_bellow на B, C и D (до того, что перед ними). И не забудьте установить высоту и ширину на wrap_content.

+0

Я сделал, как вы сказали, это не сработало. Я отправлю код еще раз –

+0

Попробуйте код, который я разместил сегодня. Я делаю это: http://3.ly/UXg2 – gnclmorais

1

Вы хотите что-то ищите? enter image description here

Вот код, который я сделал для этой схемы:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
     <Button 
      android:text="BUTTON 1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      /> 

     <Button 
      android:text="BUTTON 2" 
      android:layout_toRightOf="@+id/search_icon" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      /> 
</LinearLayout> 

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
     <Button 
      android:text="BUTTON 3" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      /> 

     <Button 
      android:text="BUTTON 4" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" 
      /> 
</LinearLayout> 
</LinearLayout> 
+0

Если вы установите все на fill_parent, то весь экран будет иметь всего 4 кнопки над ним. Это ответ на вышеупомянутый вопрос. – Lumis

+0

все установлено для заполнения родительского элемента. я могу видеть только две первые кнопки –

+0

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

0

Читать блог этого парня, если у вас есть какие-либо из этих проблем: http://blog.stylingandroid.com/

Много примеров и объясняет такие вещи, как вес очень хорошо.

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