当前位置: 首页 > 知识库问答 >
问题:

操作栏在 ICS 前设备上溢出

贺自明
2023-03-14

我正在开发一个需要与Android 2.2兼容的应用程序,它使用ActionBarSherlock在pre-ICS设备上自定义ActionBar。

我仅在 2.2 和 2.3 设备上遇到问题,即使内容适合设备屏幕,也会使 ActionBar 的内容溢出。像这样:

我已经测试了(在模拟器上)运行Android 4.0的设备屏幕尺寸(320x480上的mdpi),并且工作正常,所以我相信这个问题与ActionBarSherlock有关。

我也尝试大幅减少我的图标文件,但即使图像较小,内容仍然溢出。

这是我的样式.xml文件:

<style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar">
</style>

<style name="AppTheme" parent="AppBaseTheme">
    <item name="actionBarStyle">@style/AppBaseTheme.ActionBarStyle</item>
    <item name="actionBarTabStyle">@style/AppBaseTheme.ActionBarTabStyle</item>
    <item name="actionBarTabBarStyle">@style/AppBaseTheme.ActionBarTabBarStyle</item>
</style>

<style name="AppBaseTheme.ActionBarStyle" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
    <item name="background">@drawable/action_bar_background</item>
    <item name="android:background">@drawable/action_bar_background</item>
</style>

<style name="AppBaseTheme.ActionBarTabStyle" parent="Widget.Sherlock.Light.ActionBar.TabView.Inverse">
    <item name="background">@android:color/transparent</item>
    <item name="android:background">@android:color/transparent</item>

    <item name="android:paddingLeft">0dip</item>
    <item name="android:paddingRight">0dip</item>
</style>

<style name="AppBaseTheme.ActionBarTabBarStyle" parent="Widget.Sherlock.Light.ActionBar.TabBar.Inverse">
    <item name="background">@drawable/action_bar_tab_divider</item>
    <item name="android:background">@drawable/action_bar_tab_divider</item>

    <item name="divider">@drawable/sp</item>
    <item name="android:divider">@drawable/sp</item>
</style>

文件 @drawable/action_bar_background 的宽度为 320px,@drawable/action_bar_tab_divider 和 @drawable/sp 的宽度均为 1px。

这是在我的主要活动上创建选项卡的代码:

ActionBar actionBar = super.getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

this.createTab(actionBar, R.drawable.action_bar_tab_home_off);
this.createTab(actionBar, R.drawable.action_bar_tab_news_off);
this.createTab(actionBar, R.drawable.action_bar_tab_videos_off);
this.createTab(actionBar, R.drawable.action_bar_tab_guide_off);


private void createTab(ActionBar actionBar, int resource) {
    Tab t = actionBar.newTab();

    t.setTabListener(this);
    t.setIcon(resource);

    actionBar.addTab(t);
}

有什么想法吗?

共有1个答案

皇甫雨华
2023-03-14

问题之一是操作视图“选项卡栏”会自动将图像缩放到预定大小,因此即使您将图标设置为超大或超小,它也应该填充操作栏中大致相同的空间。

TabBar/TabView也被设计为溢出,你已经找到了^.^它适用于一次打开10到20个不同标签页的应用程序,用户可以滚动浏览它们的列表。不仅如此,选项卡视图很难使用固定的、非滚动的图标列表,这仅仅是因为 Android 设备有各种形状和大小。

两个选项可能适合您正在寻找的内容。使用布局内的图标创建您自己的相对布局或线性布局。这样,您每次都可以选择操作栏的大小=)您可以将栏停靠在任何活动的顶部或底部。

如果这不是一个选项,您可以将图标添加到顶部的动作栏菜单本身,而不进行滚动。但是,您的图标可能不适合主操作栏,这会导致任何溢出的图标被放置在溢出菜单下拉菜单中。=(

若要删除选项卡之间的分隔符间距,请将以下代码另存为可绘制文件夹中的新 xml 文件,例如分隔符可绘制.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line" >
    <size
        android:width="0px"
        android:color="@android:color/black"
        android:dashWidth="0px"
        android:dashGap="0px" />
</shape>

,然后将该可绘制对象用于制表符分隔符。

<item name="divider">@drawable/dividerdrawable</item>
 类似资料:
  • 我正在用Sherlock设置一个带有3个项目/图标的动作栏。在ICS模拟器上运行时,我只能看到2个图标。而且:没有溢出菜单(那些3点图标)!我只会在按下手机的功能表按钮时看到第三个图标。 我是否必须强制溢出图标,如果是,我如何才能这样做?

  • 我有一个使用动作条和导航抽屉的有很多碎片的活动。它已启用“home as up”。我已经实现了正确的逻辑,只有顶层的片段显示动作条抽屉切换图标,其他的片段显示箭头。我通过以下方式实现了这一点: 现在旧的v4支持库ActionBarDrawerToggle被弃用。我已经切换到v7版本和新的以获得材质设计外观。之后,当抽屉打开时,“向上”箭头正确显示,但当执行上述代码时,它完全消失。 是支持库中的一个

  • 我需要的是,如果平板电脑没有菜单硬件按钮…它将在软件按钮上显示菜单按钮,如您所见: 所以我谷歌了一下,发现要显示这个按钮,你只需要: 将minSdkVersion设置为10或更低,将targetSdkVersion设置为11、12或13,并且您不使用ActionBar,则在运行Android 4.0或更高版本的手机上运行您的应用时,系统将添加传统溢出按钮 “将您的android: TaretSdk

  • 通过usb接口可以与USB设备进行交互,这能让Chrome应用作为USB设备的驱动程序。要使用usb接口需要在Manifest中声明usb权限: "permissions": [ "usb" ] 本章内容参考自https://crxdoc-zh.appspot.com/apps/usb。

  • 我的问题是一个热门问题,我阅读并尝试了很多相关帖子,但我没有实现预期的结果,显示菜单。我还没有找到正确的解决方案。 我的应用程序可以在Android 4 . 2 . 2版本上完美运行。(版本代码17)我在Galaxy Duos手机上试用过。 我使用Android版本7,0(版本代码24)我尝试了更多目标SDK版本的变体,具有8,19,24,25并且没有目标SDK规范。 以下是一些相关的部分 -盖德

  • 我有一个标准的Android操作栏(我没有使用兼容性库),带有SearchView和一些纯文本菜单项。我希望始终展开SearchView,并在溢出菜单中显示其余项目。到目前为止,我的代码在平板电脑和Nexus 5的横向模式下运行良好,但当手机处于纵向模式时,不会显示溢出菜单。如果我将collapseActionView属性添加到SearchView,溢出菜单将正确显示,但我希望保持搜索小部件完全展

  • 嗨,我正在尝试开发一个具有完全透明状态栏和白色导航栏的页面。我正在使用 但是它在某些设备上不起作用。它在某些设备上显示状态栏的覆盖。不过,它在某些设备上工作正常。请帮我解决这个问题。我也尝试过设置全屏标志,但它会导致状态栏字体消失。我也使用了statusBarUtil库,但它会导致导航栏变黑。

  • 我正在尝试在上显示一个以将上一页/活动移动到主页面(第一次打开)。我做不到。 我的代码。 代码在中。