Android ActionBar Sherlock覆盖所有屏幕
我刚刚在Android应用程序中实现了Sherlock的ActionBar 问题是:正如您从图中看到的,加载在MainActivity中的Google Maps API v2的my SupportMapFragment完全被actionBar覆盖。我已经做了一些测试:加载一个不同的片段,例如一个简单的SherlockListFragment,但结果完全相同,并且不设置setListNavigationCallbacks(因为问题可能是我自定义的SpinnerAdapter),但actionBar始终覆盖所有屏幕,即使其中没有任何文本 图片: 我的应用程序中的一些代码: Main.javaAndroid ActionBar Sherlock覆盖所有屏幕,android,android-actionbar,actionbarsherlock,Android,Android Actionbar,Actionbarsherlock,我刚刚在Android应用程序中实现了Sherlock的ActionBar 问题是:正如您从图中看到的,加载在MainActivity中的Google Maps API v2的my SupportMapFragment完全被actionBar覆盖。我已经做了一些测试:加载一个不同的片段,例如一个简单的SherlockListFragment,但结果完全相同,并且不设置setListNavigationCallbacks(因为问题可能是我自定义的SpinnerAdapter),但actionBar
public class Main extends SherlockFragmentActivity implements ActionBar.OnNavigationListener
{
private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item";
private FragmentMappa fMappa;
private FragmentLinee fLinee;
private FragmentAtmInforma fAtm;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
fMappa = new FragmentMappa();
fLinee = new FragmentLinee();
fAtm = new FragmentAtmInforma();
setContentView(R.layout.activity_main);
int IdFixedHeader = -1;
Utils.ImpostaActionBar(IdFixedHeader, this);
getSupportFragmentManager().addOnBackStackChangedListener(getListener());
getSupportFragmentManager().beginTransaction().replace(R.id.MainContainer, fMappa).commit();
new downloadUtils().execute(0, this, true);
}
Utils.java
public static void ImpostaActionBar(int IdFixedHeader, SherlockFragmentActivity Act, String StrFixHead) {
// Set up the action bar to show a dropdown list.
ActionBar actionBar = Act.getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ArrayList<VoceListaMenuNav> Voci = new ArrayList<VoceListaMenuNav>();
Voci.add(new VoceListaMenuNav(Act.getString(R.string.title_mappa), R.drawable.btn_show_map));
Voci.add(new VoceListaMenuNav(Act.getString(R.string.title_linee), R.drawable.btn_compass_tilt));
Voci.add(new VoceListaMenuNav(Act.getString(R.string.title_percorso), R.drawable.fer));
Voci.add(new VoceListaMenuNav(Act.getString(R.string.title_preferiti), R.drawable.btn_show_map));
Voci.add(new VoceListaMenuNav(Act.getString(R.string.title_AtmInforma), R.drawable.btn_show_map));
// Set up the dropdown list navigation in the action bar.
actionBar.setListNavigationCallbacks(new AdapterListaMenuNav(Act.getSupportActionBar().getThemedContext(), Voci, IdFixedHeader, StrFixHead), (OnNavigationListener) Act);
actionBar.setSelectedNavigationItem(IdFixedHeader);
}
publicstaticvoidimpostaactionbar(int-IdFixedHeader,SherlockFragmentActivity-Act,stringstrfixhead){
//设置操作栏以显示下拉列表。
ActionBar ActionBar=Act.getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setNavigationMode(actionBar.NAVIGATION\u MODE\u列表);
ArrayList Voci=新的ArrayList();
添加(新的vocelistamenuav(Act.getString(R.string.title\u mappa),R.drawable.btn\u show\u map));
添加(新的VoceListaMenuNav(Act.getString(R.string.title_linee)、R.drawable.btn_compass_tilt));
添加(新的vocelistamenuav(Act.getString(R.string.title_percorso),R.drawable.fer));
添加(新的vocelistamenuav(Act.getString(R.string.title\u preferiti)、R.drawable.btn\u show\u map));
添加(新的VoceListaMenuNav(Act.getString(R.string.title_AtmInforma)、R.drawable.btn_show_map));
//在操作栏中设置下拉列表导航。
actionBar.setListNavigationCallbacks(新的AdapterListMenuna(Act.getSupportActionBar().getThemedContext()、Voci、IdFixedHeader、StrFixHead),(OnNavigationListener)Act);
actionBar.setSelectedNavigationItem(IdFixedHeader);
}
styles.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="Theme.Sherlock.Light.DarkActionBar">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<item name="android:windowActionBarOverlay">true</item>
<item name="android:windowActionModeOverlay">true</item>
<item name="android:actionBarStyle">@style/ActionBar</item>
</style>
<color name="GrigioSemiTrasp">#af000000</color>
<style name="ActionBar" parent="Widget.Sherlock.Light.Spinner.DropDown.ActionBar">
<item name="android:background">@color/GrigioSemiTrasp</item>
</style>
</resources>
真的
真的
@样式/操作栏
#af000000
@彩色/灰褐色
我的自定义适配器:
public class AdapterListaMenuNav extends BaseAdapter
{
@Override
public View getView(int arg0, View arg1, ViewGroup parent) {
View rowView = arg1;
if (rowView == null)
{
rowView = inflater.inflate(R.layout.list_item_menu_nav_top, null);
ViewHolderListaGenerica viewHolder = new ViewHolderListaGenerica();
viewHolder.Titolo = (TextView) rowView.findViewById(R.id.ListaMenuNavTitolo);
rowView.setTag(viewHolder);
}
if (FixedHeader == -1)
{
ViewHolderListaGenerica holder = (ViewHolderListaGenerica)rowView.getTag();
VoceListaMenuNav f = LisVoci.get(arg0);
holder.Titolo.setText(f.Titolo);
return rowView;
}
else
{
ViewHolderListaGenerica holder = (ViewHolderListaGenerica)rowView.getTag();
VoceListaMenuNav f = LisVoci.get(FixedHeader);
holder.Titolo.setText(f.Titolo);
return rowView;
}
}
Context Ctx;
ArrayList<VoceListaMenuNav> LisVoci;
LayoutInflater inflater;
int FixedHeader;
public AdapterListaMenuNav(Context Cont, ArrayList<VoceListaMenuNav> ListaVoci, int IdFixedHeader, String StrFxHeader)
{
LisVoci = ListaVoci;
inflater = (LayoutInflater)Cont.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Ctx = Cont;
FixedHeader = IdFixedHeader;
}
@Override
public int getCount() {
return LisVoci.size();
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int arg0) {
return 0;
}
@Override
public View getDropDownView(int arg0, View arg1, ViewGroup arg2) {
View rowView = arg1;
if (rowView == null)
{
rowView = inflater.inflate(R.layout.list_item_menu_nav, null);
ViewHolderListaGenerica viewHolder = new ViewHolderListaGenerica();
viewHolder.Titolo = (TextView) rowView.findViewById(R.id.ListaMenuNavTitolo);
viewHolder.Immagine = (ImageView) rowView.findViewById(R.id.ListaMenuNavImage);
rowView.setTag(viewHolder);
}
ViewHolderListaGenerica holder = (ViewHolderListaGenerica)rowView.getTag();
VoceListaMenuNav f = LisVoci.get(arg0);
holder.Titolo.setText(f.Titolo);
holder.Immagine.setImageResource(f.IdImage);
return rowView;
}
}
公共类适配器Listamenunan扩展BaseAdapter
{
@凌驾
公共视图getView(int arg0、视图arg1、视图组父级){
视图行视图=arg1;
if(rowView==null)
{
行视图=充气机。充气(R.layout.list\u item\u menu\u nav\u top,空);
ViewHolderListGenerica viewHolder=新的ViewHolderListGenerica();
viewHolder.Titolo=(TextView)rowView.findViewById(R.id.ListTitolo);
rowView.setTag(viewHolder);
}
如果(FixedHeader==-1)
{
viewHolderListGenerica holder=(viewHolderListGenerica)rowView.getTag();
VoceListaMenuNav f=LisVoci.get(arg0);
holder.Titolo.setText(f.Titolo);
返回行视图;
}
其他的
{
viewHolderListGenerica holder=(viewHolderListGenerica)rowView.getTag();
VoceListaMenuNav f=LisVoci.get(固定标头);
holder.Titolo.setText(f.Titolo);
返回行视图;
}
}
上下文Ctx;
ArrayList LisVoci;
充气机;
int-FixedHeader;
公共AdapterListMenuna(上下文Cont、ArrayList ListaVoci、int-IdFixedHeader、字符串StrFxHeader)
{
LisVoci=ListaVoci;
充气器=(LayoutInflater)Cont.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
Ctx=续;
FixedHeader=IdFixedHeader;
}
@凌驾
public int getCount(){
返回LisVoci.size();
}
@凌驾
公共对象getItem(int arg0){
返回null;
}
@凌驾
公共长getItemId(int arg0){
返回0;
}
@凌驾
公共视图getDropDownView(int arg0、视图arg1、视图组arg2){
视图行视图=arg1;
if(rowView==null)
{
rowView=充气机。充气(R.layout.list\u item\u menu\u nav,空);
ViewHolderListGenerica viewHolder=新的ViewHolderListGenerica();
viewHolder.Titolo=(TextView)rowView.findViewById(R.id.ListTitolo);
viewHolder.Immagine=(ImageView)rowView.findViewById(R.id.ListImage);
rowView.setTag(viewHolder);
}
viewHolderListGenerica holder=(viewHolderListGenerica)rowView.getTag();
VoceListaMenuNav f=LisVoci.get(arg0);
holder.Titolo.setText(f.Titolo);
holder.Immagine.setImageResource(f.IdImage);
返回行视图;
}
}
我努力想找到任何东西,终于可以自己回答了。问题在于ABS风格继承了什么。正确的代码是:
<style name="ActionBar" parent="Widget.Sherlock.Light.ActionBar">
....
</style>
....