Наложение изображения поверх кнопки - PullRequest
0 голосов
/ 18 мая 2011

Вот мой вопрос без ответа: Добавление количества новых элементов к значку на кнопке - Android

По сути, я хочу отображать "новые" значения сверху. Я вижу это как наложение некоторого представления на существующую кнопку. Как это можно сделать?

Ответы [ 2 ]

1 голос
/ 18 мая 2011

Самое простое, что можно сделать:

  1. Используйте RelativeLayout с layout_height и layout_width, установленным в WRAP_CONTENT.
  2. Поместите одну кнопку в RelativeLayout с layout_height и layout_width, установленной в WRAP_CONTENT.
  3. Добавьте ImageView в RelativeLayout, выровненный по PARENT_TOP и PARENT_RIGHT, и установите видимость GONE.

    Затем вы можете просто установить рисование ImageView для соответствующего изображения и установить видимость на VISIBLE.

0 голосов
/ 18 мая 2011

Хорошо, вот что я бы сделал:

Создание пользовательского элемента управления, расширяющего кнопку. Я не собираюсь делать красивую графику для вас, но это даст вам основную идею:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.Button;

    public class CounterButton extends Button{
        protected int count=0;
        protected final Paint myTextPaint = new Paint();
        protected final Paint myCirclePaint = new Paint();

        public CounterButton(Context context, AttributeSet attrs) {
            super(context, attrs);
            this.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.ic_dialog_email));
            this.myCirclePaint.setARGB(150, 255, 0, 0);
            this.myTextPaint.setARGB(150, 255, 255, 255);

        }

        @Override
        protected void onDraw(Canvas canvas) {
                    if(count!=0){
            canvas.drawCircle((float) (this.getWidth()*.75), (float) (this.getHeight()*.4), this.getHeight()/5, myCirclePaint);
            canvas.drawText(Integer.toString(count), (float) (this.getWidth()*.75), (float) (this.getHeight()*.4), this.myTextPaint);
             }
        }
    }

Очистите размеры текста, который вы рисуете, расположение круга (и добавьте границу и т. Д.), И у вас есть собственный элемент управления. Вы можете расширить его, чтобы установить фон в xml или динамически, и у вас будет многократно используемый элемент управления со счетчиком чисел в круге.

тогда в вашем коде вы можете сделать:

CounterButton cb=(CounterButton) findViewById(R.id.whateverYouGaveItInXML);
cb.count=SomeNewNumber;
cb.invalidate;

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

Я использовал кнопку в том случае, если вы хотите, чтобы она была легко активируемой и все такое - но вы могли бы также легко расширить вид, если вы просто делаете вид.

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