我的目标是让用户触摸屏幕上的任意位置,然后让触摸坐标显示在屏幕上的文本视图中。
这是我到目前为止所做的。
activity_main.xml
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/touchView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="To be filled" />
</LinearLayout>
Main Activity.java
:
package com.example.myfirstapp;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.MyFirstApp.MESSAGE";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView textView = (TextView)findViewById(R.id.textView1);
// this is the view on which you will listen for touch events
final View touchView = findViewById(R.id.touchView);
touchView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
textView.setText("Touch coordinates : " +
String.valueOf(event.getX()) + "x" + String.valueOf(event.getY()));
return true;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
已解决我的第一个问题是在MainActivity.java
上,代码setContentView(R.layout.main);
中的第18行出现错误。在线研究,看起来修复此错误的方法是将import android.R;
更改为import your.application.packagename.R;
。但是,我的import android.R;
文件中没有.java
。有谁知道如何解决这个错误?
编辑其次,textView仅显示单击第一个文本视图时的触摸坐标,它不会在屏幕上的任何位置显示触点的触摸坐标(它仅显示触摸点的触摸坐标)第一个文本视图上的触摸点)。如何更改此设置以便显示屏幕上任何位置的触摸坐标?
另一个编辑我对第二个问题的一个想法是给LinearLayout
id
android:id="@+id/touchLayout"
,例如.java
。然后我计划修改public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.MyFirstApp.MESSAGE";
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView textView = (TextView)findViewById(R.id.textView1);
// this is the view on which you will listen for touch events
final View touchLayout = findViewById(R.id.touchLayout);
touchLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
textView.setText("Touch coordinates : " +
String.valueOf(event.getX()) + "x" + String.valueOf(event.getY()));
return true;
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
文件:
{{1}}
答案 0 :(得分:1)
更改以下内容:
setContentView(R.layout.activity_main);
答案 1 :(得分:0)