2

文字が上に数字が下にある電話ボタンコンポーネントを作成しようとしています。背景として描画可能なセレクターを使用するスタイルを使用するカスタム FrameLayout として実装しています。

問題は、onClick イベントに適切に応答しない場合に発生します。背景セレクターの境界外をクリックすると反応することに気付きました。また、バックグラウンド ドローアブル セレクター (phoneButtonStyle) を使用するスタイルを削除しても機能します。

何か案は?ありがとうございました。

PhoneButton.java:

public class PhoneButton extends FrameLayout {

    View view;

    public PhoneButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        view = LayoutInflater.from(context).inflate(R.layout.phone_button, this);

        String number,letters;

        TypedArray a = context.getTheme().obtainStyledAttributes( attrs, R.styleable.PhoneButton, 0, 0);

        try {
            number = a.getString(R.styleable.PhoneButton_number);
            letters = a.getString(R.styleable.PhoneButton_letters);
        } finally {
            a.recycle();
        }

        ((TextView) view.findViewById(R.id.number)).setText(number);
        ((TextView) view.findViewById(R.id.letters)).setText(letters);

        view.invalidate();
    }
}

phone_button.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/phoneButtonStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:descendantFocusability="blocksDescendants" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:clickable="false"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/letters"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clickable="false"
            android:gravity="center"
            android:shadowColor="#88000000"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="4"
            android:text="a b c"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <TextView
            android:id="@+id/number"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:clickable="false"
            android:gravity="center"
            android:shadowColor="#88000000"
            android:shadowDx="0"
            android:shadowDy="0"
            android:shadowRadius="4"
            android:text="2"
            android:textAppearance="?android:attr/textAppearanceLarge" />

    </LinearLayout>

</FrameLayout>

phoneButtonStyle:

<style name="phoneButtonStyle" parent="@android:style/Widget.Button">
        <item name="android:layout_margin">4dp</item>
        <item name="android:background">@drawable/metal_border_button_selector</item>
        <item name="android:padding">0dp</item>
</style>
4

0 に答える 0