カスタムViewGroupを作成しようとしており、フルスクリーンアプリケーションで使用したいと考えています。私は "requestWindowFeature(Window.FEATURE_NO_TITLE)"を使ってタイトルバーを隠しています。タイトルバーは表示されませんが、ウィンドウの上部にはまだスペースが必要です。それは私のためにこのスペースを与えているアンドロイドであることを見るのは興味深いですAndroid:カスタムViewGroupでFEATURE_NO_TITLEを使用すると、ウィンドウ上部にスペースが残る
public class CustomLayoutTestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
Button b = new Button(this);
b.setText("Hello");
CustomLayout layout = new CustomLayout(this);
layout.addView(b);
setContentView(layout);
}
}
public class CustomLayout extends ViewGroup {
public CustomLayout(Context context) {
super(context);
}
public CustomLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
Log.i("CustomLayout", "changed="+changed+" l="+l+" t="+t+" r="+r+" b="+b);
final int childCount = getChildCount();
for (int i = 0; i < childCount; ++i) {
final View v = getChildAt(i);
v.layout(l, t, r, b);
}
}
}
(The full Eclipse project is here)
:
上記の画像は、次のコードで生成されましたカスタムレイアウト。私は自分のアクティビティのルートレイアウトとしてCustomLayoutを設定しています。 Log in "onLayout"は "t = 25"を受信しています。これが私のレイアウトを押し下げています。私が知らないことは、Androidを「t = 25」(これはタイトルバーの高さと同じです)にすることに間違っています。
Android SDK 2.1でこのコードを実行していますが、Android 2.2でも発生します。
EDIT:私はいくつかのデフォルトのレイアウト(などのLinearLayoutなど)のためにCustomLayoutクラスを変更する場合は、スペースが消えます。もちろん、Android SDKのデフォルトのレイアウトは作成しようとしているレイアウトを作成しないので、作成しています。
私が作成しているレイアウトはやや複雑ですが、これは私が自分のレイアウトに持っている問題を再現するために作成できる最小のコードです。
に
android:layout_gravity="top"
を追加することによってそれを修正FrameLayout
2.2でと同じ問題を持っていたが、@Hounshell、ありがとうございました。私は座標系が親に対して相対的であるということについて、この点をドキュメント上で見逃していました。これは私が(あなたのコメントの結果)達成したいものの写真です:[リンク](http://i.imgur.com/FIOIG) – lgfischer