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

enter image description here

Как сделать кнопки красными там, где серые, и сохранить белые интервалы?

0
Mr Pablo 2 Дек 2014 в 17:52
Проверьте мой отредактированный ответ.
 – 
Carnal
3 Дек 2014 в 13:11

2 ответа

Вы, вероятно, пропустили настройку поля для макета. На самом деле вокруг вашей кнопки есть белое пространство, поэтому все кнопки касаются, поэтому, когда вы устанавливаете фон, это белое пространство также становится красным. Это должно быть хорошо, я думаю.!

Макет:

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

    <Button
        android:id="@+id/one"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="About"
        android:layout_margin="5dp" />

    <Button
        android:id="@+id/two"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Gallery" 
        android:layout_margin="5dp"/>

    <Button
        android:id="@+id/third"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Media" 
        android:layout_margin="5dp"/>

</LinearLayout>

В strings.xml

<color name="red">#FF0000</color>

В Java

   one = (Button) findViewById(R.id.one);
        two = (Button) findViewById(R.id.two);
        three = (Button) findViewById(R.id.third);
        one.setBackgroundResource(R.color.red);
        two.setBackgroundResource(R.color.red);
        three.setBackgroundResource(R.color.red);

Выход

This is your desired output?

0
Dhinakaran Thennarasu 3 Дек 2014 в 08:58

Создайте red_button.xml в drawable следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<stroke android:width="2dp"
        android:color="#80FFFFFF" />

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

  <gradient android:angle="270"
            android:centerColor="#ff0000"
            android:endColor="#ff0000"
            android:startColor="#ff0000" />
</shape>

Чтобы получить ту же форму, что и по умолчанию Button

Вы можете поиграть с radius и stroke width и stroke color, чтобы получить Button, как вы хотите.

РЕДАКТИРОВАТЬ: вы можете добавить цвет к исходному значению по умолчанию Button следующим образом:

Drawable d = yourButton.getBackground();  
PorterDuffColorFilter filter = new PorterDuffColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP);  // or whatever color you like
d.setColorFilter(filter);  
0
Carnal 3 Дек 2014 в 13:11
Могу ли я сделать это с помощью кода, а не помещая его в XML?
 – 
Mr Pablo
2 Дек 2014 в 18:39
Почему вы хотите сделать это в коде? Создайте XML и просто добавьте в код свой фон с помощью button.setBackgroundResource(R.drawable.red_button);
 – 
Carnal
2 Дек 2014 в 18:41
Я хотел бы сделать это с помощью кода, так как я устанавливаю цвет фона с помощью кода. Если я сделал общий макет кнопки и установил его с помощью setBackgroundResource(), могу ли я изменить цвет фона внутри него с помощью кода? так что мне не нужен один макет для каждого цвета, который мне нужен?
 – 
Mr Pablo
2 Дек 2014 в 19:38
@Mike: Да, это много! Вот почему также написал, что он может играть с этими значениями.
 – 
Carnal
3 Дек 2014 в 12:21