Android - TextView onClick布局onTouch

时间:2013-08-15 23:50:19

标签: android onclick ontouchevent

我有一点问题,在我的xml中我有这个:

<LinearLayout
        android:id="@+id/mainView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="45dp"
            android:gravity="center"
            android:text="@string/app_name"
            android:textColor="@android:color/white"
            android:textStyle="bold"
            android:textSize="18sp"
            android:layout_margin="10dp" />

        <LinearLayout
            android:id="@+id/fistItem"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:layout_marginTop="15dp"
            android:orientation="vertical" >

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:text="@string/app_name"
                android:textColor="#fff"
                android:textSize="20sp" />
        </LinearLayout>
        <LinearLayout
            android:id="@+id/secondItem"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:layout_marginTop="15dp"
            android:orientation="vertical" >

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:text="@string/app_name"
                android:textColor="#fff"
                android:textSize="20sp" />
        </LinearLayout>
</LinearLayout>

我在我的活动文件中有这个:

public class MyActivity extends Activity implements OnTouchListener,
        OnClickListener {

    LinearLayout mainView;
    LinearLayout firstItem;
    TextView header;

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

        mainView = (LinearLayout) findViewById(R.id.mainView);
        firstItem = (LinearLayout) findViewById(R.id.fistItem);
        header = (TextView) findViewById(R.id.title);
        mainView.setOnTouchListener(this);
        firstItem.setOnClickListener(this);

    }

    int n = 0;

    @Override
    public void onClick(View v) {
        header.setText("First Item Clicked: " + ++n + " times");
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            Toast.makeText(getApplicationContext(), "View Touched",
                    Toast.LENGTH_SHORT).show();
        }
        return false;
    }
}

单击firstItem时出现问题。我可以看到tittle文本如何更改但Toast没有弹出,但是当我单击secondItem时它会弹出。

2 个答案:

答案 0 :(得分:1)

要通过 mainView 上的onClick firstItem 举起onTouch事件,您需要在true中返回onTouch {1}}方法。例如:

@Override
public boolean onTouch(View v, MotionEvent event) {
    ...

    return true;  //now it will raise any registered onClick event too
}

当您在false中返回onTouch时,它会消耗触摸事件,但不会将其传递给后续的onClick事件。

答案 1 :(得分:0)

你错过了这个

        firstItem.setOnTouchListener(this);
你的onCreate()

中的