- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Falks,这将是一个愚蠢的错误,但我真的猜不出它在哪里。 我正在尝试设置 OnTouchListener,但未调用方法 onTouch。
这是我的代码:
public class StepActivity extends SherlockActivity
{
private Recipe recipe = null;
private String TAG = "StepActivity";
private ArrayList<Step> steps;
private int caret = 0;
private int currentStep = 1;
private int stepQuantity;
private TextView viewStepBody;
private TextView stepNumber;
private ImageView viewPicture;
private String bodyText;
private String picture;
private String [] pictures = new String [5];
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.step_page);
RelativeLayout view = new RelativeLayout(this);
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motion) {
Log.i(TAG, "In onTouch");
float downXValue = 0;
// Get the action that was done on this touch event
switch (motion.getAction())
{
case MotionEvent.ACTION_DOWN:
{
Log.i(TAG, "In onTouch1");
// store the X value when the user's finger was pressed down
downXValue = motion.getX();
break;
}
case MotionEvent.ACTION_UP:
{
Log.i(TAG, "In onTouch2");
// Get the X value when the user released his/her finger
float currentX = motion.getX();
// going backwards: pushing stuff to the right
if (downXValue < currentX)
{
Log.i(TAG, "In onTouch previous");
goPrevious();
}
// going forwards: pushing stuff to the left
if (downXValue > currentX)
{
Log.i(TAG, "In onTouch next");
goNext();
}
break;
}
}
// if you return false, these actions will not be recorded
return true;
}
});
viewStepBody = (TextView)findViewById(R.id.step_body);
stepNumber = (TextView)findViewById(R.id.step_number);
viewPicture = (ImageView)findViewById(R.id.picture);
TextView recipeTitle = (TextView)findViewById(R.id.recipe_title);
try {
getSupportActionBar().setDisplayShowTitleEnabled(false);
recipe = (Recipe)getIntent().getSerializableExtra("Recipe1");
steps = recipe.getSteps();
stepQuantity = steps.size();
Log.d(TAG,"steps: " + steps.size());
if (stepQuantity > 0) {
Step step = steps.get(0);
pictures[0] = Constants.URL + step.getImg_url();
bodyText = step.getInstruction();
new DownloadImageTask().execute(pictures);
recipeTitle.setText(recipe.getTitle());
}
updateInfo();
} catch (Exception e) {
Toast.makeText(this, "Error occured" + e.getMessage(), 200);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.step_menu, (com.actionbarsherlock.view.Menu) menu);
return super.onCreateOptionsMenu(menu);
}
private void updateInfo() {
new DownloadImageTask().execute(pictures);
viewStepBody.setText(bodyText);
stepNumber.setText(currentStep + "/" + stepQuantity);
}
private void goNext() {
if (currentStep != stepQuantity) {
caret++;
currentStep++;
Step newStep = steps.get(caret);
pictures[0] = Constants.URL + newStep.getImg_url();
bodyText = newStep.getInstruction();
updateInfo();
} else {
caret = 0;
currentStep = 1;
Step newStep = steps.get(caret);
bodyText = newStep.getInstruction();
pictures[0] = Constants.URL + newStep.getImg_url();
updateInfo();
}
}
private void goPrevious() {
if (currentStep != 1) {
caret--;
currentStep--;
Step newStep = steps.get(caret);
bodyText = newStep.getInstruction();
pictures[0] = Constants.URL + newStep.getImg_url();
updateInfo();
}
else {
caret = stepQuantity - 1;
currentStep = stepQuantity;
Step newStep = steps.get(caret);
bodyText = newStep.getInstruction();
pictures[0] = Constants.URL + newStep.getImg_url();
updateInfo();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.next:
goNext();
return true;
case R.id.previous:
goPrevious();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
这是传递给 setContentView() 方法的我的 step_page.xml。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/step_layout1">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView android:id="@+id/recipe_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="23dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:textColor="#9d9d9d"
android:textStyle="bold"
android:layout_marginTop="4dp"/>
<TextView android:id="@+id/step_word"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp"
android:layout_below="@+id/recipe_title"
android:textColor="#000000"
android:textStyle="bold"
android:text="@string/step_word"
android:layout_marginTop="4dp"/>
<TextView android:id="@+id/step_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25dp"
android:layout_toRightOf="@+id/step_word"
android:layout_below="@+id/recipe_title"
android:textColor="#000000"
android:textStyle="bold"
android:layout_marginLeft="3dp"
android:text="1/12"
android:layout_marginTop="4dp"/>
<ImageView
android:id="@+id/picture"
android:layout_width="300dp"
android:layout_height="200dp"
android:layout_below="@+id/step_word"
android:layout_centerHorizontal="true"
/>
<TextView android:id="@+id/step_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="22dp"
android:textColor="#000000"
android:paddingTop="2dp"
android:layout_below="@+id/picture"
/>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
此处建议的另一种方法不起作用。 :
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.step_page);
RelativeLayout view = (RelativeLayout) findViewById(R.id.step_layout1);
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motion) {
Log.i(TAG, "In onTouch");
float downXValue = 0;
// Get the action that was done on this touch event
switch (motion.getAction())
{
case MotionEvent.ACTION_DOWN:
{
Log.i(TAG, "In onTouch1");
// store the X value when the user's finger was pressed down
downXValue = motion.getX();
break;
}
case MotionEvent.ACTION_UP:
{
Log.i(TAG, "In onTouch2");
// Get the X value when the user released his/her finger
float currentX = motion.getX();
// going backwards: pushing stuff to the right
if (downXValue < currentX)
{
Log.i(TAG, "In onTouch previous");
goPrevious();
}
// going forwards: pushing stuff to the left
if (downXValue > currentX)
{
Log.i(TAG, "In onTouch next");
goNext();
}
break;
}
}
// if you return false, these actions will not be recorded
return true;
}
});
有什么意见吗?
最佳答案
与我认为您认为 RelativeLayout view = new RelativeLayout(this);
的想法相反,它不会为您的 Activity 布局提供父 RelativeLayout View 。您可以做的是为您的父级 RelativeLayout 分配一个 id,使用 findViewById 获取它,然后将您的 onTouchListener 或其他任何内容附加到它。
编辑(因为您发布了 xml 布局)
您的父级 RelativeLayout 未公开 - 整个屏幕都被 ScrollView 占据,因此它后面的 RelativeLayout 永远无法触摸。由于您的内部 RelativeLayout(您的 ScrollView 内的那个)没有任何可点击的 View ,您可以在其上附加您的 onTouch。
关于android - 无法设置 OnTouchListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10718142/
你好 我在我的应用程序中为 ImageView 设置了一个 onTouchListener,我的目标是拥有一个 ImageView,用户可以在应用程序中四处拖动并放置他们想要的任何位置。 我已经使用在
我正在开发一个钢琴应用程序,它不是最好的,但它是一个开始。 我使用下面的代码来播放声音并通过触摸事件更改按钮的图像。 C4.setOnTouchListener(new View.On
请看下面的代码 XML 代码 Java 代码 package k.k; import java.util.ArrayList; import
对于我正在开发的应用程序,我需要使用 OntouchListeners,以便按钮的透明区域不可单击,但这引发了我没有预料到的问题。当我按下按钮时,每次都会存储多个值。 这是我的代码: private
我正在开发一个名为 CanvasView 的自定义 View 。这个 View 允许我在 onDraw 方法之外在其上绘制内容。它是这样的: public class CanvasView exten
好的,伙计们,好吧...,好像我在上一个问题中错了... 我正在开发一个单词搜索游戏,我已经将我的应用程序实现的“视点”从 GridView 更改为在 android 中使用 Canvas 绘制位图。
我有一个附加了 onTouchListener 的文本字段。当我触摸文本时,ACTION_DOWN 被触发,文本从默认的白色变为黑色。然后我取消触摸 ACTION_UP 被触发,文本变回白色。 但是现
最初我通过 XML 将我的按钮连接到一个方法,如下所示: 然后我决定添加一个 onTouchListener 以便我可以处理 ACTION_UP 事件: private OnTouc
代码: public class ImageActivity extends FragmentActivity { ImageView mClickedImage; PhotoView
brown = (Button) findViewById(R.id.brownButton); brown.setOnTouchListener(new OnTouchListener()
我制作了一个自定义 View ,它具有 OnTouchEvent(MotionEvent event) 方法。这使得 View 在按下时改变颜色。 我还为我的 Activity 实现了一个 OnTou
我想创建自己的 OnTouchListener。然后我想将它封装到一个 .jar 文件中以使其可重用。 这是我的特定 OnTouchListener: public class TouchableVi
我正在尝试在 spinner 上设置 OnTouchListner。能够在自定义 View 上调用它,但不能在微调器上调用。 还尝试使用 MotionEvent.ACTION_DOWN。代码不适用于
Falks,这将是一个愚蠢的错误,但我真的猜不出它在哪里。 我正在尝试设置 OnTouchListener,但未调用方法 onTouch。 这是我的代码: public class StepA
我对 OnTouchListener 有疑问。我创建了一个自定义按钮。此按钮与 onClick 事件 一起正常工作。但它不适用于 onTouch 事件 这是我的自定义按钮。我只想要按钮和按钮按下这两个
我正在创建一个像 Facebook 聊天头一样的小弹出窗口。 气泡启动并出现,但 ontouchlistener 没有响应 ontouch 事件做了我测试时应该做的事情,但当我集成它时,它没有触发 下
我有一个 OnTouchListener,但是当我实际测试我的程序并触摸屏幕时,显示的颜色不是应有的颜色。我使用颜色 block 进行了测试,它可以工作,但是坐标仍然关闭,如果您在一种颜色上触摸得太远
我的图像移动得很奇怪,并且在我需要它保持连续的时候随机暂停。它停止然后工作。如果您可以提高效率,请发帖。还要看看是否有办法缩短代码。 import android.support.v7.app.App
我有一个按钮(代码中的变量 theButton),并且希望能够将它拖到它的父 View 周围。这是它的 OnTouchListener: OnTouchListener touchBListe
您好,我构建了一个具有根相对布局 View 的应用程序。我试图设置一个触摸监听器以在用户触摸屏幕时返回,但它似乎没有触发,我不知道我哪里出错了。我在网上搜索和查看,但据我所见,似乎每个人都使用与我相同
我是一名优秀的程序员,十分优秀!