独自のボタンを作成する代わりに、アクションバーのサイズに応じてビルドボタンを移動するだけです。
このコードは、私の作品とボタンが(Googleマップのように)あるべき場所のボタンだけです:
// Gets the my location button
View myLocationButton = getSherlockActivity().findViewById(R.id.MainContainer).findViewById(2);
// Checks if we found the my location button
if (myLocationButton != null){
int actionBarHeight = 0;
TypedValue tv = new TypedValue();
// Checks if the os version has actionbar in it or not
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB){
if (getSherlockActivity().getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
}
// Before the action bar was added to the api
else if(getSherlockActivity().getTheme().resolveAttribute(com.actionbarsherlock.R.attr.actionBarSize, tv, true)){
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
}
// Sets the margin of the button
ViewGroup.MarginLayoutParams marginParams = new ViewGroup.MarginLayoutParams(myLocationButton.getLayoutParams());
marginParams.setMargins(0, actionBarHeight + 20, 20, 0);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(marginParams);
layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
myLocationButton.setLayoutParams(layoutParams);
}
あなたがそれを置く場合だけ(onActivityCreatedにこのコードを置きますonCreateOptionsMenuで、それは3.0の前のバージョンをサポートしていません - 。。そこでの生活サイクルが異なるため
もう一つは、「R.id.MainContainerは」マップフラグメントのコンテナである
私はusinよg ActionBar Sherlockですが、いくつかの変更を加えると、通常のアクションバーでも動作します。
http://stackoverflow.com/a/20750956/1066839 – John