我的布局如下
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。还有其他更好的方法吗?我有点卡住了。任何帮助将不胜感激!
答案 0 :(得分:0)
好的,我找到了解决方案。我有一个片段,其中包含我的自定义视图作为私有成员变量。片段的onCreateView()
方法返回自定义视图变量。在我的自定义视图类中,findViewById()
返回null。所以我将getActivity()
的上下文从我的片段传递到我的自定义视图类,并将其转换为Activity以使其工作!!
((Activity)context).findViewById()
希望这会有所帮助!!