пользовательская кнопка Android - PullRequest
0 голосов
/ 20 июля 2010

Я хотел бы создать пользовательскую кнопку следующим образом:

http://i77.photobucket.com/albums/j74/bertyhell/button.png?t=1279626910

но это не работает мне нужно показать текст на кнопках с абсолютным позиционированием относительно происхождения кнопок все строки должны быть изменены во время выполнения

но кнопка ниже может быть обычной кнопкой

как я могу это сделать?

если я создаю кнопку, унаследовав ее от android.widget.button, я сам должен нарисовать всю кнопку?

Есть ли более простой способ?

EDIT

хорошо, я попробовал наследовать от относительного макета

вот так:

    package be.smarttelecom.datacheck.views;

    import android.content.Context;
    import android.util.Log;
    import android.widget.RelativeLayout;
    import android.widget.TextView;

    public class AlertButton extends RelativeLayout {

        private TextView roomNumber;

        public AlertButton(Context context, String roomNumber) {
            super(context);
            try{
            this.alertId = alertId;
            // TODO Auto-generated constructor stub
            this.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.WRAP_CONTENT));

            TextView room = new TextView(context);
            room.setFocusable(false);
            room.setText(R.string.room);
            room.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));

            this.roomNumber = new TextView(context);
            this.roomNumber.setFocusable(false);
            this.roomNumber.setId(R.id.roomNumber);
            this.roomNumber.setTextSize(26);
            this.roomNumber.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT));
            this.roomNumber.setText(roomNumber);

            }catch(Exception ex){
                Log.i("test", "problem during construction of alert button: " + ex.getMessage());
            }
        }

        public void setRoomNumber(String number){
            roomNumber.setText(number);
        }

        public void setDescription(String description){
            this.description.setText(description);
        }
    }

когда я добавляю это так:

        TableRow row2 = new TableRow(this);
        AlertButton alert = new AlertButton(this, "1","14","wc","krist");
        row2.addView(alert);
        container.addView(row2, 0);

я получаю пустую страницу и вообще без ошибок

Есть идеи, что я сделал не так?

как разместить текстовые поля на определенных позициях? положить их в абсолютном макете и добавить координаты X и Y? (абсолютное расположение ограничено, альтернатива?)

1 Ответ

2 голосов
/ 20 июля 2010

Я думаю, что самый простой способ - создать собственное представление, расширяющее RelativeLayout. Затем вы можете добавить 4 TextView с в любом порядке, который вы пожелаете, с любыми настройками, которые вам нужны. Чтобы он выглядел и работал как кнопка, вы можете добавить кнопку в макет с шириной и высотой, установленной в fill_parent. Убедитесь, что ваши TextView не сфокусированы и кнопка отправлена ​​на заднюю часть макета.

В качестве альтернативы вы можете установить свойства RelativeLayout в вашем пользовательском представлении так, чтобы они были активируемыми = true и focusable = true. Затем добавьте в качестве фона вид рисования, которое выглядит как кнопка. Используйте селектор для обработки всех сфокусированных / нажатых состояний, как для реальной кнопки. Подробности о том, как это сделать, можно найти здесь: Стандартная кнопка Android с другим цветом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...