2012-06-01 8 views
8

私はボタンをグレーアウトしてユーザには表示されないようにしたいのですが、クリックが聞こえるので、ボタンが使えない理由を説明するメッセージをユーザに表示することができます。ボタンを無効にしても、まだクリックを聞くようにすることはできますか?

手動でボタンの色を灰色などに設定するのではなく、適切な標準の無効な外観を設定するAndroid APIがAndroid APIであることを確認したいと思います。

関連:Android - Listen to a disabled button

答えて

4

ボタンの背景を無効にするためのデフォルトの背景に手動で設定することもできます。しかし、このような

何かがそれを行う必要があります有効ボタンを残して、通常の方法でクリックイベントを処理します。

mBtn.setBackgroundResource(android.R.drawable.btn_default_normal_disabled); 
+0

バージョンには対応していません。 – arenaq

0

私はAndroidの専門家ではないですので、より良い方法があるかもしれませんが、何のボタンを無効にし、イベントをキャッチします透視図を重ねるでしょうか?

ビューが常にボタンの下にあるので、Z-インデックスを変更するか、必要なときに動的に作成する必要があります。

+0

garphは、それは面白いアイデアだ - 私はそれが働くだろう賭けます。私は最初に他のソリューションのカップルを試してみるつもりです。 –

-1

あなたはまた、両方が押されたとのためにButtonのスタイルは(グレーアウト探すように設定することができます非プレス状態)、通常はsetOnClickListener()ですが、onClick()メソッドではクリックできないというメッセージが表示されます。

-1

ボタンがテキストビューを拡張するため、 .setTextColor()や.setBackgroundColor()などのテキストビューでメソッドを使用することができます。あなたは2つのオプションがあり、表示のための今

  • AlertDialog - アラートを表示しますが、指定しない限り、自己の近くにはありません。
  • トースト - 指定された時間にテキストを表示し、自己終了します。

お選びください。

+0

Juju、ありがとうございます。しかし、色を手動で変更したくない*という質問を読んではいけません。 –

9

これは、無効にしたときにタッチのイベントを公開するカスタムボタンです。確かに動作しており、テスト済みです。あなたに特化したデザイン

public class MyObservableButton extends Button 
{ 
public MyObservableButton(Context context, AttributeSet attrs) 
{ 
    super(context, attrs); 
} 

private IOnClickWhenEnabledListner mListner; 

public void setOnClickWhenEnabledListener(IOnClickWhenEnabledListner listener) { 
    mListner = listener; 
} 

private interface IOnClickWhenEnabledListner { 
    public void onClickWhenEnabled(); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) 
{  
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     if (!isEnabled() && mListner != null) { 
      mListner.onClickWhenEnabled(); 
     } 
    } 

    return super.onTouchEvent(event); 
} 

} 

これは、Androidの開発者として私の視点から望むものを達成するための正しい方法です。

そこにすべてのアンドロイドの見解をextanding何ら問題はなく、xmlファイルにそれらを使用して、代わりにソース..

幸運

+1

余分なリスナーを避けて、OnClickListenerを使用することができます。 onTouchEvent()でperformClick()を追加する – Patrick

関連する問題