2015-02-14 2 views
0

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

Я пытался решить эту проблему следующим образом: найти метод, который возвращает ширину и высоту экрана (или родительского?), А затем создать 4 контейнера с шириной экрана 1/4 и создать кнопки, которые заполняют родительский элемент. Если создание контейнера невозможно, я могу создать кнопки шириной 1/4 экрана.

Есть ли способ, который возвращает экран или размер приложения? Можно ли установить размер кнопки в Java-коде?

+0

Как об использовании [GridLayout] (http://developer.android.com/reference/android/widget/GridLayout.html) с 4 столбца, каждый из которых имеет ширину 25%, а затем добавляет кнопку в каждый столбец? – mbdavis

+0

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

+1

Вы можете использовать weight attrbute в LinearLayout, вам не нужен метод размера экрана. –

ответ

0

вы можете просто использовать LinearLayout как это:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"> 
    <Button 
     android:id="[email protected]/btn1" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:text="BUTTON 1"/> 

    <Button 
     android:id="[email protected]/btn2" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:text="BUTTON 2"/> 

    <Button 
     android:id="[email protected]/btn3" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:text="BUTTON 3"/> 

    <Button 
     android:id="[email protected]/btn4" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:text="BUTTON 4"/> 

</LinearLayout> 

По этой конструкции высоты вашей кнопки будет соответствовать всему экрану. вы можете изменить их родительскую высоту LinearLayout и поместить какой-либо другой элемент под или над ним.

ПРИМЕЧАНИЕ: в соответствии с темой, которую вы используете для своего приложения, можно изменить фон Бана. поэтому если вам нужен плоский фон без краев вам нужно использовать theme.holo.light или создать свой собственный фон и установить его для кнопки, как это и установить его в качестве фона Buttton в:

background.xml

<selector 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" > 

    <item android:state_pressed="true" > 
     <shape> 
      <gradient 
       android:startColor="#ffFDE234" 
       android:endColor="#ffFDE234" 
       android:angle="270"/> 

     </shape> 
    </item> 
    <item> 
     <shape > 
      <gradient 
       android:startColor="#00000000"<!--transparent color as default color for Button's Background, you can change it--> 
       android:endColor="#00000000" 
       android:angle="270"/> 

     </shape> 
    </item> 

</selector> 
+0

Спасибо! Я был не очень конкретным, поэтому вы попытались помочь мне с удалением полей, что на самом деле не нужно. Все равно. В любом случае, не могли бы вы рассказать мне, как добавить новые «строки» кнопок выше или ниже?Есть ли такая возможность в линейной компоновке или мне нужно переходить на макет таблицы? –

+0

вам нужна кнопка выше или ниже этих кнопок? если да, вы можете сделать это с помощью LinearLayout и табличного макета. В LinearLayout вы можете сортировать своих детей по горизонтали или по вертикали, если вы хотите как горизонтально, так и вертикально, вы должны использовать два LinearLayout внутри друг друга или использовать макет таблицы или схему сетки. если вы дадите мне изображение вашей должности, я могу помочь вам больше. – MHP

+0

Теперь, когда я понимаю, что родители-дети, мне это не очень сложно это сделать. Ты уже мне очень помог! –

0

Вы можете использовать этот код, чтобы получить размеры экрана в пикселях:

Display display = getWindowManager().getDefaultDisplay(); 
Point screen = new Point(); 
display.getSize(screen); 
int width = screen.x; 
int height = screen.y; 

Кроме этого, для вашей проблемы вместо этого кода вы можете установить вашу Кнопки ширину 0 и использовать Button.weight Атрибут автоматически разделяет пространство между вашими кнопками.

+0

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

+0

@ Kuba лучше использовать менеджеры компоновки для позиционирования, если вы не можете абсолютно точно – mbdavis

+0

Для вашей проблемы рядом с этим кодом я предлагаю использовать атрибут веса Buttons – Morteza

0

с LinearLayout, используйте этот код в XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:orientation="horizontal" > 
    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 

</LinearLayout> 

Установка каждого из весов кнопки 1 будет означать, все они занимают равное место

0

Без пустого пространства между кнопками:

enter image description here

<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" 
tools:context=".MainActivity" 
android:orientation="horizontal"> 

<Button 
    android:layout_width="0dp" 
    android:layout_height="50dp" 
    android:text="Button1" 
    android:layout_marginLeft="-5dip" 
    android:layout_marginRight="-5dip" 
    android:layout_weight="1"/> 

<Button 
    android:layout_width="0dp" 
    android:layout_height="50dp" 
    android:text="Button2" 
    android:layout_marginLeft="-5dip" 
    android:layout_marginRight="-5dip" 
    android:layout_weight="1"/> 

<Button 
    android:layout_width="0dp" 
    android:layout_height="50dp" 
    android:text="Button3" 
    android:layout_marginLeft="-5dip" 
    android:layout_marginRight="-5dip" 
    android:layout_weight="1"/> 

<Button 
    android:layout_width="0dp" 
    android:layout_height="50dp" 
    android:text="Button4" 
    android:layout_marginLeft="-5dip" 
    android:layout_marginRight="-5dip" 
    android:layout_weight="1"/> 

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