1

基本的に SupportMapFragment である SherlockMapFragment を持つアクティビティがあります。その中に、ガソリンスタンドなどのマーカーを含むマップを表示します。私が欲しいのは、Android 用の Google マップに少し似た UI で、特に透明な ActionBar を使用して、ActionBar を通して地図を見ることができるようにすることです。この動作を保証するために、setContentView() を呼び出す前に、Activity で requestWindowFeature を呼び出します。

this.requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
setContentView(layout.activityLayout);

私にとって重要なのは、ActionBar (私は Sherlock を使用しています) は透明ですが、そのアクション (OptionsMenu) が表示されているため、ユーザーは透明な ActionBar でアクションをクリックできます - Android 用の Google マップと同じです。

これまでのところ、すべてが機能し、見栄えも良好です。次は、マップ上のマーカーをリストに表示して、ユーザーが自分に適したものを選択できるようにしたいと考えています。これは、同じデータを使用した別のプレゼンテーションです。ListView は fragmentLayout.xml 内の要素であり、単に膨張させてデータを入力します。

ここで問題が発生します: requestWindowFeature を呼び出してシステムに ActionBar の後ろのスペースを使用するように指示したため、ListView が同じサイズに膨らむため、リストの最初の要素が ActionBar の下ではなく ActionBar の後ろにあります。

たとえば、必要に応じてビューが ActionBar の後ろまたは下から始まるように、動作をリセットできれば完璧です。

私が試したこと:1)もちろん、setContentView()の前にしか呼び出すことができないため、RuntimeExceptionで終わるListViewを膨らませた後、requestWindowFeatureを呼び出そうとしました

2) setFeatureInt() を介してフラグを設定し、次のようにフラグメント内から無効にしようとしました:

getActivity().getWindow().setFeatureInt(
                       Window.FEATURE_ACTION_BAR_OVERLAY), 
                       R.layout.activityLayout);
super.onCreate(null);
getActivity().invalidateOptionsMenu();
ViewGroup vg = (ViewGroup) getActivity().findViewById(R.layout.activityLayout);
vg.invalidate();
vg.requestLayout();
vg.postInvalidate();

誰かが私を助けることができれば、それは素晴らしいことです。追加情報が必要な場合は、私に連絡してください。

乾杯エマニュエル

4

0 に答える 0