2013-07-10 2 views
5

Можно ли указать границу на Android-кнопке в main.xml? [p.s. без «отдельного XML-файла, содержащего инсультом тег», но в исходном файле, где я определяю кнопку и также без «динамически путем программирования» решения и решения «изображения»]Можно ли указать границу в андроидной кнопке?

<Button 
    android:background="#FFFFFF" 
    android:layout_width="0dp" 
    android:layout_height="fill_parent" 
    android:text="Player 3" 
    android:layout_x="0px" 
    android:layout_y="0px" 
    android:id="@+id/p3" 
    android:layout_weight="1" 

/> 

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

+0

Вы можете использовать форму-селектор XML, чтобы сделать пользовательскую кнопку с границей вашего собственного выбора для различных кнопок STATES, Посмотрите на [ Стандартная кнопка Android с другим цветом] (http://stackoverflow.com/q/1521640/593709) –

+0

макет xmls предназначен для компоновки, а не для графической конкретики – njzk2

+0

@AdilSoomro, я был добрай hopi что у меня было бы меньше, чем я пропустил .thnk u для ответа. мне, возможно, придется пойти с выбором селектора фигур. – Nyx

ответ

7

Это не рекомендуется для этого, потому что он вызывает overdraw и добавляет ненужные виды, Gunaseelan has the proper method.


Нет понятия границ как атрибута. Принятым способом является использование отдельного рисунка в качестве фона для View (используя stroke, как вы уже упоминали, и как пишет @gunaseelan).

Другой (не рекомендуется) способ вложить ваши Button в другом View как LinearLayout, установить цвет фона на желаемый цвет границы на обволакивающей View и обивка на внешней View тоже.

<LinearLayout 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:background="#342334" 
    android:padding="5dp" 
    > 
    <Button 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:text="whatwhaaat" 
     /> 
</LinearLayout> 

Значение прокладки будет указывать толщину границы. Этот метод не рекомендуется, так как вы получаете дополнительный View в своем макете и еще один слой overdraw (он рисует LinearLayout, а затем Button).

+0

ну, я был в надежде, что там будет то, что я пропустил.thnk u для ответа – Nyx

34

Попробуйте использовать форму

my_shape.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 

    <corners 
     android:bottomLeftRadius="7dp" 
     android:bottomRightRadius="7dp" 
     android:radius="0.1dp" 
     android:topLeftRadius="7dp" 
     android:topRightRadius="7dp" /> 

    <solid android:color="#FFFFFF" /> 

    <stroke 
     android:width="1dp" 
     android:color="#E8E6E7" /> 

</shape> 

И кнопка

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/my_shape" 
    android:text="Button" /> 

Скриншот

enter image description here

Я надеюсь, что т его поможет вам.

+0

привет, я пытался избежать этой самой вещи. Но thkk u для ответа ур. – Nyx

+1

Привет. Я использовал ваш код, но никаких изменений не отразилось на моих кнопках. Вы можете помочь? –

+0

Обратите внимание, что AndroidStudio по умолчанию создает 'selectors', а не' shape'. –

0

enter image description here

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle" > 

<gradient 
    android:angle="270" 
    android:endColor="#E8f2fe" 
    android:startColor="E8f2fe" /> 

<corners android:radius="3dp" /> 

<stroke 
    android:width="2px" 
    android:color="#486e9d" /> 

для получения дополнительной информации http://androiddhina.blogspot.in/2015/09/border-color-on-android-button.html

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