2013-09-11 2 views
0

Я пытаюсь отобразить 4 ImageButtons в нижней части макета. Я могу получить только 3 ImageButtons. Четвертый ImageButton не отображается. и вот мой код для этого.Создайте 4 ImageButtons внизу макета

Я использую Relative Layout для отображения приложения.

<ImageButton 
    android:id="@+id/Button1" 
    android:layout_weight="1.0" 
    android:layout_gravity="bottom" 
android:layout_alignParentBottom="true" 
    android:longClickable="true" 
    android:layout_width="wrap_content" 
    android:layout_height="75sp" 
    android:background="@android:color/transparent" 
    android:src="@drawable/imagebutton2"/> 

<ImageButton 
    android:id="@+id/Button2" 
    android:layout_gravity="bottom" 
    android:layout_toRightOf="@+id/Button1" 
    android:layout_width="wrap_content" 
    android:layout_height="75sp" 
    android:background="@android:color/transparent" 
    android:src="@drawable/imagebutton1" 
    android:layout_weight="1.0" 
    android:layout_marginLeft="2dp" 
    android:longClickable="true"/> 

<ImageButton 
    android:id="@+id/Button3" 
    android:layout_gravity="bottom" 
    android:layout_toRightOf="@+id/Button2" 
    android:layout_height="75sp" 
    android:layout_width="wrap_content" 
    android:layout_weight="1.0" 
    android:background="@android:color/transparent" 
    android:src="@drawable/imagebutton1" 
    android:layout_marginLeft="2dp" 
    android:longClickable="true"/> 
<ImageButton 
    android:id="@+id/Button4" 
    android:layout_gravity="bottom" 
    android:layout_height="75sp" 
    android:layout_width="wrap_content" 
    android:layout_weight="1.0" 
    android:background="@android:color/transparent" 
    android:src="@drawable/imagebutton1" 
    android:layout_marginLeft="2dp" 
    android:longClickable="true" 
    android:layout_alignParentRight="true"/> 
+0

И покажите скриншот и ваш код «RelativeLayout», пожалуйста. Я использовал ваш код для отображения этих четырех «ImageButton's», и все они отображаются. –

ответ

1

Положите его в LinearLayout с весами и выровнять эту LinearLayout TOT он внизу родителя, как это:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:layout_alignParentBottom="true" > 

    <ImageButton 
     android:id="@+id/ib1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

    <ImageButton 
     android:id="@+id/ib2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

    <ImageButton 
     android:id="@+id/ib3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

    <ImageButton 
     android:id="@+id/ib4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

</LinearLayout> 

Обратите внимание, что этот метод будет снижать производительность несколько.

+0

Спасибо, Но я хочу, чтобы ImageButtons располагался в нижней части макета. (например, Tablayout). когда макет открывается при любом разрешении или плотности экрана, кнопка «Изображение» должна отображаться в нижней части экрана макета. – user2545522

+0

Для этого вы можете поместить этот 'LinearLayout' в отдельный XML-файл, и вы можете его включить, см. Http://stackoverflow.com/a/6306836/954474 – overbet13

+0

Спасибо за помощь. – user2545522

0

Прежде всего, необходимо удалить это из вашей ImageButton атрибуты, если вы хотите продолжать использовать RelativeLayout в качестве родительского компоновщика:

android:layout_weight="1.0" 

Он используется в LinearLayout, Lint должны давать вам предупреждение о нем (недействительный layout в RelativeLayout).

Если вы хотите, чтобы ваши 4 кнопки, чтобы показать в нижней части экрана, вам нужно включить

android:layout_alignParentBottom="true" 

во всех 4 ImageButtons, я попробовал XML вы предоставляете и только кнопка первого показывает в нижней части ,

И последнее, но не менее, если вы хотите, чтобы ваши кнопки имеют одинаковый размер, чтобы иметь некоторые конструктивные консистенцию, я хотел бы предложить положить их в горизонтальном LinearLayout с

android:layout_alignParentBottom="true" 
android:layout_width="fill_parent" 

и настроить ImageButtons с

android:layout_width="0dp" 
android:layout_weight="1.0" 

Затем включите LinearLayout в свой RelativeLayout.

Другое дело: так как вы используете

android:layout_width="wrap_content" 

для ваших ImageButtons, вам необходимо убедиться, что изображение не слишком широко, в противном случае некоторые из ваших кнопок не может быть показан на экране, потому что первый (s) занимает слишком много места, оставляя последний (ы) справа от вашего экрана.

На стороне записки, я надеюсь, что вы не пытаетесь сделать IOS стилем нижней панели вкладок, это не одобряется в Android, подробнее here ...

Иметь хорошую!

+0

Спасибо, это сработало с помощью Android: layout_alignParentBottom = "true" во всех кнопках – user2545522

+0

Прохладный, рад, что у вас это работает! Можете ли вы принять ответ, если вы считаете, что ответили на ваш вопрос удовлетворительным образом? Благодаря ! ;-) – 2Dee

0

На последнем ImageButton у вас нет:

android:layout_toRightOf="@+id/Button3" 

Вы будете нуждаться в этом, если вы хотите быть в самом низу.

Я хотел бы также предположить, что вы удалить некоторые из кода:

android:layout_gravity="bottom" 
android:layout_weight="1.0" 

Это работает только в FrameLayout или LinearLayout.

Если вы хотите знать наверняка каждый ImageButton находится в нижней части экрана, что использование вы использовали для первой кнопки:

android:layout_alignParentBottom="true" 
0

Как и некоторые люди говорят, что в последней кнопки, вы не есть android:layout_toRightOf = "@id/Button3", так что это будет в верхней части макета.

Другой способ сделать это, что я обычно делаю:

android:layout_toRightOf = "@id/Button1" 
android:layout_alignbottom = @id/Button1" 

Это будет совпадать с нижней части button1. Я делаю это, потому что иногда эта кнопка не совпадает с другой, зависит от компоновки.

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