我有一个TextView
曾经在屏幕上显示,并做了我想要的。但是,我精简了一些后来的代码,通过触摸它的父FrameLayout
重新定位它。现在,TextView
(名为angleView
)不再显示在屏幕上,但是当我打印出它的坐标时,它仍然以相同的方式工作。谁能看到我做错了什么?
以下是我onCreate()
方法的代码:
angleView = new TextView(getApplicationContext());
angleView.setTextColor(Color.RED);
angleView.setText("0");
angleView.setLayoutParams(new FrameLayout.LayoutParams(SCREEN_WIDTH/20, SCREEN_HEIGHT/20));
以及FrameLayout
的{{1}}代码:
onTouchListener
(其他方法无关紧要,过去各个方法的所有代码都在preview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
float y = (centerPoint.getY() - event.getY() + STATUS_BAR_HEIGHT);
float x = (centerPoint.getX() - event.getX());
double angle = Math.atan(y/x);
setAngleFieldData(event, angle, y, x);
setFingerFollower(event, angle);
setYMeasure(event, y);
setXMeasure(event, x);
setTextPositions(event, angle, y, x);
Log.i("angleX", String.valueOf(angleView.getX()));
Log.i("angleY", String.valueOf(angleView.getY()));
return true;
}
private void setAngleFieldData(MotionEvent event, double angle, float y, float x){
angleView.setText(String.valueOf(angle));
angleView.setX(event.getX());
angleView.setY(event.getY());
if(isRadians) {
if(x < 0 && y >= 0){
angleView.setText(String.valueOf(2 * Math.PI + angle));
}
}
}
。)
如果你想知道,是的,有一个:
onTouch
非常感谢!
编辑:所有代码都位于preview.addView(angleView);
内的onCreate()
方法内。
答案 0 :(得分:1)
ApplicationContext
无法修改UI。变化:
angleView = new TextView(getApplicationContext());
人:
angleView = new TextView(this);
或者如果你在片段中:
angleView = new TextView(getActivity());
答案 1 :(得分:0)
好的,我找到了它无法正常工作的真正原因(我现在感觉非常愚蠢)。如果你看,你会看到我将参数设置为SCREEN_WIDTH和SCREEN_HEIGHT。好吧,我在设置这两个常量之前初始化了angleView。
好的,Jeeter:D
答案 2 :(得分:0)
您应该使用活动上下文而不是应用程序上下文
angleView = new TextView(ActivityName.this);
请通过以下链接检查commonsware的答案