0
我有一個佈局如下增加父母的寬度時子視圖加入
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。這個線性佈局在裏面有多個文本視圖。但是我想增加「容器」的寬度以及文本視圖超過初始寬度時的線性佈局,以便在添加文本視圖時不會剪切。下面是我如何做它:
這是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();
}
}
我在這條線得到一個NullPointerException異常「wrapper.setMinimumWidth(大小);」 。還有其他更好的方法嗎?我有點卡住了。任何幫助,將不勝感激!
我猜findByViewId(R.id.wrapper)返回null。這可能是錯誤。 –
是的,你是對的。 findViewById返回null。你有什麼想法爲什麼它會返回null,當我在我的主要活動中提到時它工作正常。 –
我也試過getRootView()。setMinimumWidth()和getRootView()。invalidate()...但尺寸保持不變! –