在显示之前无法以编程方式编辑android视图的宽度

时间:2014-07-14 15:34:11

标签: android

我正在尝试编辑TextView的宽度,然后根据某个得分值将其加载到屏幕上。该要求类似于,基于文本视图应具有宽度的相对分数值。

我在活动的onCreate()方法中编写了以下代码,如下所示,

{{{

TextView graph = (TextView) findViewById(R.id.predictionScoreGraph);

    graph.getViewTreeObserver().addOnGlobalLayoutListener(
            new OnGlobalLayoutListener() {

                @Override
                public void onGlobalLayout() {
                    int score = 60;

                    UserData data = UserData.getInstance();
                    score = data.overallScore();
                    TextView graph = (TextView) findViewById(R.id.predictionScoreGraph);

                    int grossWidth = graph.getWidth();

                    Log.d(TAG, "Existing width of the text view is "
                            + grossWidth);

                    LayoutParams existing = graph.getLayoutParams();
                    int fillWidth = (grossWidth * score) / 100;

                    Log.d(TAG, "Modified width is " + fillWidth);
                    graph.setWidth(fillWidth);
                    existing.width = fillWidth;
                    graph.setLayoutParams(existing);
                    graph.setBackgroundColor(getResources().getColor(
                            android.R.color.holo_green_light));


                    graph.getViewTreeObserver()
                            .removeGlobalOnLayoutListener(this);

                }
            });

}}}

它像宝石一样!但是,当我想为多个TextView对象执行此操作时,它不会更改TextView对象的宽度。

有人可以帮我解决一下如何更改多个TextView对象的宽度吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

尝试覆盖活动的GlobalLayoutListener方法,而不是使用onMeasure