1

これは非常に簡単な修正である必要がありますが、私には理解できないようです。私のプログラムでは、背景色を変更して変更onClickし、onTouchをACTION_DOWNとで変更していACTION_UPます。しかし、画面に触れたり、出入りしたりするときに色を変更するために必要TextViewです。mouseOver/mouseOutイベントのように機能する必要があります。Androidでこれを行う方法はありますか?onTouchまたは、アクションが内部から開始する必要がある場合、私は立ち往生していTextViewますか?

今、私はそれ自体に設定しonTouchListenerましたTextView。別の場所に設定してから、xとyがTextview?内にあるかどうかを確認する必要があります。または、使用する必要がある別のイベントリスナーはありますか?私はAndroidを初めて使用しますが、何か助けていただければ幸いです。ありがとう。

マイク

4

1 に答える 1

2

OnTouchListenerアプリケーションに実装し、次にonTouchメソッドに実装し、タッチイベントの現在の位置がビューの境界ボックスの境界内にあるかどうかを確認し続けます。ある場合は新しい背景を適用し、そうでない場合は元の背景を適用します。

すべてのビューが実装されているため、setBackgroundColorキャストは行いませんでしたTextViewが、少なくともアプリケーションをさらに開発するための開始点としては、例で十分です。

このための完全なコードは次のとおりです。

public class Main extends Activity implements OnTouchListener{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //Set the listener for the parent/container view
        findViewById(R.id.cont).setOnTouchListener(this);

        //Get a hold of the view and create the Rect for the bounds
        View target = findViewById(R.id.target);
        Rect b = new Rect();

        //Get the bounding box of the target view into `b`
        target.getGlobalVisibleRect(b);
    }

    public boolean onTouch(View v, MotionEvent event) {

        //Check if it's within the bounds or not
        if(b.contains((int)event.getRawX(),(int) event.getRawY())){
            target.setBackgroundColor(0xffff0000);
        }else{
            target.setBackgroundColor(0xff000000);
        }

        //You need to return true to keep on checking the event
        return true;
    }
}

前のコードのユーザーインターフェイスは、IDを使用した線形レイアウトと、IDcontを使用したビュー(このTextView場合はa)targetです。残りは完全にデフォルトなので、ここに貼り付ける意味はありません。これは、実際のデバイスで試してみるときにエミュレータとymmvでのみテストしたことに注意してください。ただし、私が考える限り、問題はないはずです。


関連ドキュメント:

于 2012-09-23T22:14:41.303 に答える