添加子视图时增加父级的宽度

时间:2014-06-28 12:37:38

标签: android android-layout android-view

我的布局如下

Horizontal Scroll View: id - container
    Scroll View: width & height - match_parent
        Relative Layout: id - wrapper, width & height - match_parent
            View
            LinearLayout: id - timeline, width & height - match_parent
            LinearLayout: id - body, width & height - match_parent

“容器”具有初始宽度。我想在“body”中添加一个LinearLayout,其宽度等于容器。此线性布局内部有多个文本视图。但是,当文本视图超出初始宽度时,我想增加“容器”的宽度以及线性布局,以便在添加时不会剪切文本视图。以下是我的表现:

这是我尝试添加到“body”的LinearLayout

public class Layer extends LinearLayout {
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), 100);
    };

    public void addTextView(CharSequence text) { 
        TextView tv = new TextView(text);
        addView(tv);
        if(this.getWidth() < tv.getX() + tv.getWidth())  {
            RelativeLayout wrapper = (RelativeLayout) findViewById(R.id.wrapper);
            wrapper.setMinimumWidth(size);
            wrapper.invalidate();
        }
    }

我在此行'wrapper.setMinimumWidth(size);'中收到NullPointerException。还有其他更好的方法吗?我有点卡住了。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。我有一个片段,其中包含我的自定义视图作为私有成员变量。片段的onCreateView()方法返回自定义视图变量。在我的自定义视图类中,findViewById()返回null。所以我将getActivity()的上下文从我的片段传递到我的自定义视图类,并将其转换为Activity以使其工作!!

((Activity)context).findViewById()

希望这会有所帮助!!