可視状態がGONEのビューが(望ましくないほど)画面上のスペースを占有しているという問題が発生しています。この問題はなく、ごく最近のデバイス(私はShow a progress bar when an Activity is loadingごとに、いくつかのフィールドを移入しAsyncTasksを利用した後に)可視状態で表示する画面上でスペースを空にしました
コンテキストのビット8+に、APIレベル< = 7デバイス上で常に発生します。 私はのLinearLayoutを拡張するカスタムビューを作成しました"タイトル"ボタンと(ユーザー定義、場合によっては、いくつかのTextViews、他のものはTableLayouts) "コンテンツ"を含んでいます。このビューの目的は、タイトルボタンのonClickの内容の表示を切り替えることです(私はこのためにウィジェットが組み込まれているとは思いません。私は間違っているかもしれません)。
onLayoutで()私は、明示的にGONEにタイトル、それが描画される最初の時間を除いて、すべての子ビューの表示状態を設定します。
protected void onLayout(boolean changed, int l, int t, int r, int b) {
if(initialDraw) {
setContentsVisible(false);
initialDraw = false;
}
super.onLayout(changed, l, t, r, b);
}
public void setContentsVisible(boolean visible) {
for(int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
if(child != mTitle) {
child.setVisibility(visible ? VISIBLE : GONE);
}
}
}
おっと。それはコピー・ペースト・エラーでした。実際はsuper.onLayout()を呼び出します。 – Adam