0

Facebookの通知ボタンと同じようにButton、Androidで通知を行いたいです。Activityこれを試しImageButtonてみButtonましたが、同じレイヤーの画像の上に描画されたテキストを表示できませんでした。なんで?

4

3 に答える 3

2

質問が正しく、通知の数を含む赤い円が必要な場合は、ドローアブルを作成し、それを TextView の背景として使用します

これは、角の丸い長方形のサンプルです。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
    <shape>
        <padding android:left="1dp"
        android:top="1dp"
        android:right="1dp"
        android:bottom="1dp"/>
        <solid android:color="#FFFFFF"/>
        <corners android:radius="3dp"/>
    </shape>
    </item>

    <item>
    <shape>
        <corners android:radius="3dp"/>
        <solid android:color="#F00"/>
    </shape>
    </item>
</layer-list>

次に、それを TextView の背景として使用するだけです

編集: FrameLayout を使用して、通知を ImageView の上に表示します。

            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" >

                <ImageView
                    android:id="@+id/imageView"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/image" />

                <TextView
                    android:id="@+id/notification"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="bottom|right"
                    android:background="@drawable/red_notification_frame"
                    android:gravity="center"
                    android:minWidth="15dp"
                    android:paddingLeft="1dp"
                    android:paddingRight="1dp"
                    android:textColor="#fff"
                    android:textStyle="bold" />
            </FrameLayout>

また、TextView の layout_gravity を変更して、画像上の位置を制御します。

于 2013-03-15T15:45:30.933 に答える
1

画像の上に恒久的なテキストを表示したい場合、ショートカット オプションは、画像編集ソフトウェアを使用して、画像の上にテキストを書き込むことです。次に、ImageButton を使用して画像を配置します。

于 2013-03-15T16:49:25.823 に答える
0

私は答えを修正し、解決策を思いついた

<RelativeLayout
    android:layout_height="102dp"
    android:layout_width="102dp"
   android:padding="15dp">
    <ImageView
    android:id="@+id/myImageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/envelope" />

            <TextView
                android:id="@+id/myImageViewText"
                android:layout_width="1dp"
                android:layout_height="12dp"
                android:layout_alignLeft="@+id/myImageView"
                android:layout_alignTop="@+id/myImageView"
                android:layout_alignRight="@+id/myImageView"
                android:layout_alignBottom="@+id/myImageView"
                android:textAppearance="?android:attr/textAppearanceLarge"
                android:layout_marginTop="43dp"
                android:layout_marginLeft="43dp"
                android:gravity="center"
                android:text="0"
                android:background="@drawable/rounded_corners"
                android:textColor="@android:color/white" />
        </RelativeLayout>

xml スタイル、ドローアブルに入れます

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
 <stroke
android:width="1dp"
android:color="@android:color/holo_red_dark" />
<solid android:color="@android:color/holo_red_light" />
<padding
android:left="1dp"
android:right="1dp"
android:top="1dp" />
<corners android:radius="20dp" />
</shape>

私の場合、テキストが 3 文字を超えている場合、9+ と言います。

于 2016-02-05T12:22:29.663 に答える