4

TextViewアクションバーのアイコンに(カウントを表示するために)カーソルを合わせたい。私がやったことはRelativeLayout、背景を設定し、それをTextViewそのレイアウトに配置し、余白が収まるまでねじ込みますが、テキストの長さが変わるとすぐに壊れます。TextViewアイコンに対してテキストを配置できないため、背景を設定することもできません。

これが私のXMLです:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_gravity="fill_horizontal" >

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:background="@drawable/cart" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="0"
        android:layout_marginTop="5dp"      android:layout_marginLeft="43dp"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout> </RelativeLayout>

これが私が何を意味するかを示すスクリーンショットです:

ここに画像の説明を入力してください

TextViewが常に中央に配置/配置さTextViewれるように、ストレスのない方法、おそらくライブラリを設定できますか?Drawable

4

3 に答える 3

3

アイコンに対してテキストを配置できないため、TextViewに背景を設定することもできません。

実際には、アイコンを基準にしてテキストを配置できます。カートアイコンとナンバーバッジアイコンを別々の画像として分離し、個別にレイアウトする必要があります。私はそれほど前に自分でこれをしなければなりませんでした、そして私はカートアイコンのと、背景として9パッチの「バッジ」を持った数字のためのを使ってRelativeLayoutそれをしました。ImageViewTextView

秘訣は、番号をカートアイコンの左右に揃えてから、左右TextView余白使用して番号バッジをカートアイコンの上下に押し込むことです。このように、番号バッジは常にカートアイコンに基づいて固定されます。ImageView

また、のをに設定するgravityTextViewcenter数字が大きくなるにつれて、テキストの相対的な位置がほぼ同じになります。最後に、を使用paddingしてTextView、番号の端と「バッジ」9パッチの端の間にどれだけのギャップがあるかを制御します。

これが私の実装の抜粋です(私はこれのいくつかを編集しました):

   <RelativeLayout
        android:id="@+id/cartButton"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent" >

        <ImageView
            android:id="@+id/cartIconImageView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:src="@drawable/ic_menu_cart" />

        <TextView
            android:id="@+id/cartBadge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/cartIconImageView"
            android:layout_alignLeft="@+id/cartIconImageView"
            android:layout_marginBottom="10dp"
            android:layout_marginLeft="9dp"
            android:background="@drawable/state_list_cart_badge"
            android:gravity="center"
            android:includeFontPadding="false"
            android:lines="1"
            android:paddingLeft="8dp"
            android:paddingRight="8dp"
            android:text="7" />
    </RelativeLayout>

そして、これはそれがどのように見えるかです:

ここに画像の説明を入力してください

ここに画像の説明を入力してください

于 2013-03-05T15:57:30.357 に答える
0

FrameLayoutを使用します。それは常に役に立たないと呼ばれますが、あなたが私に尋ねるなら、あるビューを別のビューの上にレイアウトするのは完璧です。

引用

子ビューはスタックに描画され、最後に追加された子が一番上に表示されます。FrameLayoutのサイズは、表示されているかどうかに関係なく、最大の子(およびパディング)のサイズです(FrameLayoutの親が許可している場合)。GONEのビューは、setConsiderGoneChildrenWhenMeasuring()がtrueに設定されている場合にのみサイズ設定に使用されます。

于 2013-03-05T15:20:50.963 に答える
0

TextViewを使用し、背景として9パッチを設定します。

9パッチファイル

あなたはそれをいじくり回さなければならないかもしれませんが(私はこれを1、2分で泡立てました)、画像の右下のようなものがあなたが望むものです。2つのビューを処理するよりもはるかに一貫性があります。

于 2013-03-05T15:53:23.490 に答える