Все не так делеате.
1 - findViewById ищет в пределах локального лейаута а не у предка. А у поля лейаут вообще отствует.
2. Код createButton это вообще ересь. Дочерний вью не должен себя добавлять в контейнер сам. Равно как и за размерами своими следить. За это отвечает тип лейаута.
developer.android.com/training/custom-views/index.html читать это до простветления.