0

皆さん、これは私の問題です。をクリックしてそのタッチイベントを検出できるようにしようとしていますTextView( も含めない場合に機能しますsetMovementMethod)。を含めるとsetMovementMethodonClickはまったく機能しません。私は両方を使用して、下にスクロールできるようにするTextViewだけでなく、クリックしてそのイベントを処理できるようにしたいと考えています。ありがとう。

public class SQLView extends Activity implements OnClickListener{

    public static final String KEY_ROWID = "_id";
    public static final String KEY_FRONT = "card_front";
    public static final String KEY_BACK = "card_back";
    private Cursor myCursor;
    private TextView tv, card_info;
    private int iRow;
    private int iFront;
    private int iBack;
    private String info = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sqlview);

        tv = (TextView)findViewById(R.id.flashcard);
        tv.setMovementMethod(new ScrollingMovementMethod());
        tv.setOnClickListener(this);

        Flashcards Cards = new Flashcards(this);
        Cards.open();//open DB

        myCursor = Cards.getCursor();

        iRow = myCursor.getColumnIndex(KEY_ROWID);
        iFront = myCursor.getColumnIndex(KEY_FRONT);
        iBack = myCursor.getColumnIndex(KEY_BACK);

        myCursor.moveToFirst();

        intialize();

        tv.setText(myCursor.getString(iFront));
    }

    private void intialize(){

        Button add = (Button) findViewById(R.id.add_new);
        Button next = (Button) findViewById(R.id.next);
        Button prev = (Button) findViewById(R.id.prev);

        add.setOnClickListener(this);
        next.setOnClickListener(this);
        prev.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {

        switch (v.getId()){

            case R.id.next:
                if(myCursor.isLast()){
                    myCursor.moveToFirst();
                    tv.setText(myCursor.getString(iFront));
                }else{
                    myCursor.moveToNext();
                    tv.setText(myCursor.getString(iFront));
                }
                break;

            case R.id.prev:

                if(myCursor.isFirst()){

                    myCursor.moveToLast();
                    tv.setText(myCursor.getString(iFront));
                }else{
                    myCursor.moveToPrevious();
                    tv.setText(myCursor.getString(iFront));
                }
                break;


            case R.id.flashcard:
                if(tv.getText().equals(myCursor.getString(iFront))){
                    tv.setText(myCursor.getString(iBack));
                    break;
                }
                tv.setText(myCursor.getString(iFront));
                break;

            case R.id.add_new:
                Intent list = new Intent("com.example.flashcards.ADD_FLASHCARD");
                startActivity(list);
                break;
        }
    }
}

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

<TextView
    android:id="@+id/flashcard"
    android:layout_width="fill_parent"
    android:layout_height="34dp"
    android:layout_weight="0.17"
    android:gravity="center"
    android:maxLines="300"
    android:scrollbars="vertical"
    android:textSize="30dp" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <Button
        android:id="@+id/add_new"
        android:layout_width="wrap_content"
        android:layout_height="64dp"
        android:layout_weight="0.51"
        android:text="Add New"/>

    <Button
        android:id="@+id/next"
        android:layout_width="wrap_content"
        android:layout_height="64dp"
        android:layout_weight="0.51"
        android:text="Next"/>

    <Button
        android:id="@+id/prev"
        android:layout_width="wrap_content"
        android:layout_height="64dp"
        android:layout_weight="0.51"
        android:text="Previous" />
</LinearLayout>

</LinearLayout>
4

2 に答える 2

0

あなたはあなたの意見を求める必要がありsetFocusable(true)ます。ドキュメントから:

キー リスナーまたは移動メソッドを持つ TextView をフォーカス可能にしない場合、またはキー リスナーまたは移動メソッドを持たない TextView をフォーカス可能にする場合は、setFocusable(boolean)これを呼び出した後にもう一度呼び出して、フォーカス可能性を元に戻す必要があることに注意してください。あなたが望む方法。

于 2013-01-05T03:14:53.473 に答える