Показать уведомление на экране, как тост, но кликабельно.Короче говоря "ClickableToast" - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть требование, когда мне нужно показать полосу внизу экрана для определенного события в фоновом потоке. Также это должно быть кликабельно.

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

Ответы [ 3 ]

2 голосов
/ 01 сентября 2011

Может быть, это полезно для вас. в файле макета напишите

<LinearLayout   
xmlns:android="http://schemas.android.com/apk/res/android" 
                    android:layout_width="fill_parent" 
                    android:layout_height="fill_parent"
                    android:orientation="vertical"
                    android:gravity="bottom"
                    android:paddingLeft="5px"
                    android:paddingTop="5px"
                    android:paddingRight="5px">

        <packagename.TransparentPanel
                android:id="@+id/transparent_panel" 
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:paddingTop="5px"
                android:paddingLeft="5px"
                android:paddingBottom="5px"
                android:paddingRight="5px">

            <Button android:id="@+id/button_click_me"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:text="Click Me!"/>

        </packagename.TransparentPanel>

и создайте TransparentPanel в вашем пакете

public class TransparentPanel extends LinearLayout 
{ 
private Paint   innerPaint, borderPaint ;

public TransparentPanel(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public TransparentPanel(Context context) {
    super(context);
    init();
}

private void init() {
    innerPaint = new Paint();
    innerPaint.setARGB(225, 75, 75, 75); 
    innerPaint.setAntiAlias(true);

    borderPaint = new Paint();
    borderPaint.setARGB(255, 255, 255, 255);
    borderPaint.setAntiAlias(true);
    borderPaint.setStyle(Style.STROKE);
    borderPaint.setStrokeWidth(2);
}

public void setInnerPaint(Paint innerPaint) {
    this.innerPaint = innerPaint;
}

public void setBorderPaint(Paint borderPaint) {
    this.borderPaint = borderPaint;
}

@Override
protected void dispatchDraw(Canvas canvas) {

    RectF drawRect = new RectF();
    drawRect.set(0,0, getMeasuredWidth(), getMeasuredHeight());

    canvas.drawRoundRect(drawRect, 5, 5, innerPaint);
    canvas.drawRoundRect(drawRect, 5, 5, borderPaint);

    super.dispatchDraw(canvas);
}
}

установите это там, где вам нужно.

1 голос
/ 01 сентября 2011

Вы можете отобразить диалоговое окно и изменить de android: background на android:background="@android:drawable/toast_frame"

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

0 голосов
/ 01 сентября 2011

Я покажу PopupWindow для уведомления поверх текущей активности. Нашел это через гугл. Спасибо всем за ваши ответы.

...