如何在ActionBar的导航选项卡中设置自定义View并使选项卡适应其高度?

2023-11-26

我正在使用ActionBar我想设置一个自定义View在导航选项卡中。

选项卡的高度似乎是固定的,我的自定义View较大,所以不适合。

我尝试自定义样式,如下所示,但它并没有使选项卡更高......

如何让选项卡的高度适应我的自定义View size?

(我知道我可以使用Tab's setIcon and setTitle就我而言,但我仍然想使用自定义View)

enter image description here

样式.xml

<resources>   
    <style name="AppBaseTheme" parent="android:Theme.Holo">
    </style>
    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:actionBarTabStyle">@style/MyTabStyle</item>
    </style>

     <style name="MyTabStyle" parent="@android:Widget.ActionBar.TabView">
        <item name="android:height">85dp</item>
    </style>
</resources>

自定义选项卡.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center_horizontal" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:scaleType="centerInside" />

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:maxLines="1" />

</LinearLayout>

MainActivity.java

public class MainActivity extends FragmentActivity implements
ActionBar.TabListener {

    SectionsPagerAdapter mSectionsPagerAdapter;

    ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Set up the action bar.
        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // Create the adapter that will return a fragment for each of the three
        // primary sections of the app.
        mSectionsPagerAdapter = new SectionsPagerAdapter(
                getSupportFragmentManager());

        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        // When swiping between different sections, select the corresponding
        // tab. We can also use ActionBar.Tab#select() to do this if we have
        // a reference to the Tab.
        mViewPager
        .setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                actionBar.setSelectedNavigationItem(position);
            }
        });

        // For each of the sections in the app, add a tab to the action bar.
        for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
            // Create a tab with text corresponding to the page title defined by
            // the adapter. Also specify this Activity object, which implements
            // the TabListener interface, as the callback (listener) for when
            // this tab is selected.

            LinearLayout view = (LinearLayout) getLayoutInflater().inflate(R.layout.custom_tab, null);

            ImageView icon = (ImageView) view.findViewById(R.id.icon);
            icon.setImageResource(R.drawable.about);

            TextView title = (TextView) view.findViewById(R.id.title);
            title.setText("About");


            actionBar.addTab(actionBar.newTab()
                    //.setText(mSectionsPagerAdapter.getPageTitle(i))
                    .setCustomView(view)
                    .setTabListener(this));
        }
    }

    /*****/
}

这使操作栏保持在顶部,但我不知道为什么!

ActionBar.DISPLAY_SHOW_HOME

操作栏保持在顶部:

actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM  | ActionBar.DISPLAY_SHOW_HOME);

选项卡位于操作栏的顶部:

actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在ActionBar的导航选项卡中设置自定义View并使选项卡适应其高度? 的相关文章

  • 手机重置后AlarmManager闹钟不触发

    在我的应用程序中 用户加入一个计划 然后第二天中午会出现警报通知 这是我的代码 首先 我在 AlarmManager 中设置一个闹钟 如下所示 set alarm to the next day 12 00 noon of the join
  • app-release-unsigned.apk 未签名

    我在 github 上下载了 Android 应用程序的 zip 文件 并尝试运行它 但出现一个包含此消息的对话框 app release unsigned apk is not signed Please configure the si
  • Android 片段之间的阴影分隔符

    我有一个类似于平板电脑的 ICS Gmail 应用程序的布局 ListFragment左边是内容 右边是内容 我想知道如何构建布局 使两个片段之间有一个阴影分隔符 就像在 Gmail 应用程序中一样 如下所示 另外 由于这适用于这个问题 我
  • 地理编码 API 与地理编码器

    在我的应用程序中 我需要使用地理编码 但我不太清楚该使用哪种方法 直到昨天我在URL中添加了参数maps googleapis com maps api geocode json address myparameter sensor fal
  • 尝试获取屏幕上绘制的每个随机圆圈的 x、y 坐标

    您好 我正在制作一款游戏 该游戏将在屏幕上创建随机圆圈 随机创建的圆圈的值为红色或绿色 我的问题是 我希望不仅能够确定用户何时单击其中一个圆圈 而且还能够确定他们最终单击的圆圈 红色或绿色 下面是我的代码 我的主要问题是试图找到将要绘制的圆
  • 如何将现有的 SQLite3 数据库导入 Room?

    好吧 我在桌面上使用 SQLite3 创建了一个只需要读取的某些信息的数据库 我正在制作的应用程序不需要在此表中插入或删除信息 我在 Room 数据库层上做了相当多的谷歌搜索 所有文档都需要在构建应用程序时在 Room 中创建一个新的数据库
  • AltBeacon 服务位于单独的 Android 进程中

    我需要帮助 有一个适用于 Xamarin Android 的应用程序 在其中 启动了一个与 AltBeacon 库配合使用的服务 在此服务中 创建了一个线程 在该线程中不断扫描信标 服务以 StartForeground 启动 该服务应该有
  • Android ViewModel LiveData 在按钮单击时更新视图

    我正在关注这个tutorial https developer android com topic libraries architecture guide html common problems faced by app develop
  • ProgressBar.setInminateDrawable() 不起作用

    当我尝试更改我的 indeteminateDrawable 进度条就消失了 我必须更改我的进度条的可绘制对象 我尝试了invalidate requestLayout等 我不知道如何解决它 谢谢 这里的代码 progressBar setI
  • 数据未刷新“DynamiteModule:未找到 com.google.firebase.auth 的本地模块描述符类”

    我已经使用 Firebase 很长时间了 到目前为止 除了以下场景之外 一切都很好 有时我注意到我的应用程序不再获取新数据 我正在用一个活跃的监听器监听变化 并且我确实有keepSynced set to true 发生这种情况时 我会在日
  • 垂直从上到下线手势检测器

    我用的是 手势工具 注意到对于垂直从上到下的线无法检测 因为我在代码中使用生成的手势文件 如下所示 但无法检测垂直从上到下的线手势检测 import java util ArrayList import android app Activi
  • Android:如果任务管理器终止,则重新调用应用程序

    如果应用程序线程被任务管理器杀死 则应用程序线程将关闭 需要重新调用应用程序 就像它被其他应用程序或任务管理器杀死一样 任何想法 您必须使用 START STICKY 命令运行后台服务 只需扩展 Service 并重写 onCommand
  • 可用屏幕的尺寸

    我使用的是 Nexus 7 1280x800 android 4 2 2 API 17 我想获取屏幕的大小 将其划分为相同高度和宽度的正方形部分 我正在使用 FrameLayout 我的方块是 ImageView 的子类 我这样做 cont
  • 在循环中按名称访问变量

    我正在开发一个 Android 项目 并且有很多可绘制对象 这些绘图的名称都类似于icon 0 png icon 1 png icon 100 png 我想将这些可绘制对象的所有资源 ID 添加到整数 ArrayList 中 对于那些不了解
  • Android项目中使用java获取电脑的IP地址

    我在用ksoap2 android http code google com p ksoap2 android 我需要使用java获取IP地址 这样我就不必每次都手动输入它 我所说的 IP 地址是指 例如 如果我这样做ipconfig使用命
  • 如果我的应用程序安装在 SD 卡上,私人数据也在那里吗?

    我假设应用程序的私有数据 例如 SharedPreferences 和 SQLite 数据库 位于手机的内部存储而不是 SD 卡上 即使应用程序本身安装在 SD 卡上 我在任何地方都找不到对此的简单明确的确认 有人可以确认一下吗 是的 私有
  • Android Jetpack Compose 尺寸随持续时间变化的动画

    如何在 Jetpack Compose 中添加内容大小更改动画的持续时间 尝试使用Modifier animateContentSize 并通过动画规格具有持续时间 但它只是突然进入或退出 没有观察到持续时间 Column Modifier
  • 如何检测日期选择器对话框的取消单击?

    我正在使用以下 日期选择器的示例 http developer android com guide tutorials views hello datepicker html http developer android com guide
  • Android - 如何简单地拖放按钮?

    我在这里找到了一个适合初学者的教程 http androidrox wordpress com 2011 05 13 android sample app drag and drop image using touch http andro
  • 如何减少 Android 中浮动 editText 提示和 editText 框之间的空间?

    我有一个带有浮动提示的 EditText 但我想知道如何减少浮动提示和 EditText 框之间的空间 现在我的用户界面看起来像https i stack imgur com ltfra jpg https i stack imgur co

随机推荐

  • 如何获取所有顶级窗口javafx?

    我在AWT中看到了一个方法 java awt Window getWindows 在JavaFx中 有什么方法可以获取所有窗口JavaFx应用程序吗 Thanks 对于运行 java 8 的 javafx 8 使用 FXRobotHelpe
  • 获取从资源管理器菜单到 powershell 变量的文件夹路径

    是否可以从 powershell 打开资源管理器窗口并将资源管理器中选择的路径存储到变量中 从 powershell 打开资源管理器窗口 PS C gt 探险家 也许这个脚本就是你想要的 Function Select FolderDial
  • 在单页上禁用/绕过 Magento 全页缓存

    如何禁用或绕过单个页面的 FPC 我不想使用打孔 因为页面上有几个块需要动态 我宁愿修改一个配置 类来指定整个页面不应被缓存 类似于结帐的行为 我对 FPC 的理解是它不用于 会话用户 登录 添加到购物车等 但是 我发现 FPC 在用户登录
  • 如何从java类调用python方法?

    我在 Java 项目中使用 Jython 我有一个 Java 类 myJavaClass java和一个 Python 类 myPythonClass py public class myJavaClass public String my
  • 依赖项 Microsoft.Composition 1.0.27 不支持框架 .NETCoreApp,版本=v1.1

    当我将框架部分升级为 frameworks netcoreapp1 1 dependencies imports dnxcore50 我收到错误 依赖项 Microsoft Composition 1 0 27 不支持框架 NETCoreA
  • 我无法运行捆绑程序,不断出现错误

    我刚刚将我的 RoR 开发环境迁移到 Ubuntu 我从 github 上提取了一个正在开发的项目 并尝试安装所有必要的 gem 然而 每当我跑步时bundle or bundle install or bundle install exe
  • 将 FormsAuthentication cookie 传递给 WCF 服务

    我有一个与远程 WCF Web 服务通信的网站 两者都使用相同的自定义 FormsAuthentication Provider 我想通过模拟当前登录网站的用户的 WCF 服务进行身份验证 我已经使用 UserName 客户端凭据手动执行此
  • 将 data 属性添加到 leaflet.js 标记元素

    目标 将数据属性添加到 leaflet js 标记元素标记中 我有一个带有地图和 聚光灯 区域的项目 使用 leaflet js 填充地图上的位置 当我单击地图上的图钉时 我希望其相应的图像和信息出现在聚光灯区域中 我在没有地图的情况下做了
  • 通过XAML将Window.Content设置为页面?

  • 写入 Perl Moose 类中的只读属性

    使用 Perl 和Moose 可以通过两种方式访问 对象数据 self gt attribute or self gt attribute 这是一个简单的例子 展示了两者 Person pm package Person use stric
  • Rails / ActiveRecord - AdapterNotSpecified,即使它是

    我正在做Ruby on Rails 教程 前三章使用 SQLite 但后来建议使用 PostgreSQL 进行开发 以便更轻松地部署 Heroku 编辑我的后database yml and Gemfile使用 pg 而不是 sqlite3
  • 如何在 protobuf 3 中定义可选字段

    我需要在 protobuf proto3 语法 中指定带有可选字段的消息 就proto 2语法而言 我想要表达的信息是这样的 message Foo required int32 bar 1 optional int32 baz 2 根据我
  • Android:如何在继承Activity的类中使用onDraw方法?

    作为初学者 我一直在使用简单的布局 xml 和一个名为 Counter 的类构建一个简单的计数器应用程序 该类派生 扩展 自 Activity 类 现在 我想加载一个位图 png 文件 以放置在计数器旁边 我一直在阅读 onDraw 但它需
  • 指针是否也有任何地址或内存分配?

    如果指针存储变量的地址 那么我们从哪里获得指针呢 我问的是 如果我们直接使用指针 那么一定有一个位置可以从哪里获取这个指针 是的 声明的指针在内存中有自己的位置 在上面的示例中 您有一个变量 b 它存储值 17 int b 17 the v
  • C#:编组包含数组的结构

    我正在做一些 C 互操作工作 我有以下结构 pragma pack push 1 typedef struct unsigned int64 Handle LinkType t Type LinkState t State unsigned
  • 使用 LessCSS 用户定义函数?

    我最近刚刚接触 LessCSS 我遇到了我认为的主要限制 我想知道是否有办法做到这一点 我想说我在某处读到 Sass 允许用户定义函数 但 LessCSS 会做同样的事情吗 我想要做什么 fs 16 either return the va
  • 如何在 Elm 中提交表单?

    这是一个非常基本的问题 但我没有找到任何例子 我有这样的看法 view address model div div text lt ID toString model id form input value model title text
  • SES AWS 错误代码:SignatureDoesNotMatch,状态代码:403

    我在尝试通过 Amazon SES 发送邮件时收到 AWS 错误代码 SignatureDoesNotMatch 状态代码 403 我已确认我使用的是通过以下方式创建的正确凭据https console aws amazon com iam
  • 检查 GET 中是否传递了任何变量

    我已经做了一些搜索 但没有得出任何结果 我确信这是显而易见的 基本上 我试图弄清楚是否有任何内容通过 GET 从表单传递 我知道如何检查单个元素 但我只想快速检查是否有任何内容通过 Cheers 使用时要小心count GET 如果您提交包
  • 如何在ActionBar的导航选项卡中设置自定义View并使选项卡适应其高度?

    我正在使用ActionBar我想设置一个自定义View在导航选项卡中 选项卡的高度似乎是固定的 我的自定义View较大 所以不适合 我尝试自定义样式 如下所示 但它并没有使选项卡更高 如何让选项卡的高度适应我的自定义View size 我知