Android - TextView不显示
我有一个TextView
,用于在屏幕上显示,并做了我想要的。不过,我精简了一些后来的代码,通过触摸它的父代FrameLayout
重新定位它。现在,TextView
(名为angleView
)停止在屏幕上显示,但是当我打印出它的坐标时,它仍然以相同的方式工作。任何人都可以看到我做错了什么?Android - TextView不显示
这里是从我onCreate()
方法的代码:
angleView = new TextView(getApplicationContext());
angleView.setTextColor(Color.RED);
angleView.setText("0");
angleView.setLayoutParams(new FrameLayout.LayoutParams(SCREEN_WIDTH/20, SCREEN_HEIGHT/20));
和从代码的FrameLayout
的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
中。)
而且如果你想知道,是的,那里我s:
preview.addView(angleView);
非常感谢!
编辑:所有的代码是在onCreate()
方法,内Activity
。
OK,我找到了真正的原因,它没有工作(我觉得现在非常愚蠢)。如果你看,你会发现我将参数设置为SCREEN_WIDTH和SCREEN_HEIGHT。好吧,我在设置这两个常量之前初始化了angleView。
好一个,Jeeter:d
仍然应该使用活动上下文来代替应用程序上下文。请检查我答案中的链接,作为您应该使用活动上下文的原因。 – Raghunandan 2013-05-02 03:42:00
ApplicationContext
无法修改用户界面。变化:
angleView = new TextView(getApplicationContext());
通过:
angleView = new TextView(this);
或者如果你是一个片段内:
angleView = new TextView(getActivity());
即使我改变它仍然不起作用。不过,它曾经使用getApplicationContext()正常工作。 – Jeeter 2013-05-02 01:53:43
您应该使用活动情境,而不是应用程序上下文
angleView = new TextView(ActivityName.this);
请通过commonsware中的链接检查答案下面
是这样的在一个Activity里面?如果(是)不使用ApplicationContext,请使用适当的上下文。然后,为了测试,强制TextView处于一个简单的位置,以排除所有数学)。随处添加LOGS以查看数字。 – 2013-05-02 01:46:10
它会是'新的TextView(this)'? – Jeeter 2013-05-02 01:47:14
如果你在一个活动,是的。如果你还在一个新的TextView(getActivity()) – 2013-05-02 01:49:04