Android - TextView没有显示

时间:2013-05-02 01:42:33

标签: java android textview visibility android-framelayout

我有一个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()方法内。

3 个答案:

答案 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的答案

When to call activity context OR application context?