Android:选项卡不会用 Holo 主题填充父级?

2024-01-01

下面的代码创建一个包含 4 个选项卡的视图。使用默认主题(androidmanifest.xml 中未定义主题),我得到第一个图像,其中选项卡均匀增长以填充可用空间。如果我将主题设置为android:theme="@android:style/Theme.Holo",我得到第二张图像,其中 tabwidget(具有绿色背景)仍然填充父级的宽度,但选项卡不会增长以填充 tabwidget。

关于如何在使用 Theme.Holo 时获得第一个结果有什么想法吗?

public class TempProjActivity extends Activity 
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        setContentView(new MyTabHost(this));
    }

    private class MyTabHost extends TabHost
    {
        public MyTabHost(Context context) 
        {
            super(context, null);

            setId(android.R.id.tabhost);

            TabWidget widget = new TabWidget(getContext());
            widget.setId(android.R.id.tabs);
            widget.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
            widget.setBackgroundColor(Color.GREEN);

            FrameLayout layout = new FrameLayout(getContext());
            layout.setId(android.R.id.tabcontent);
            layout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

            LinearLayout linearLayout = new LinearLayout(getContext());
            linearLayout.setOrientation(LinearLayout.VERTICAL);
            linearLayout.setLayoutParams(new TabHost.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
            linearLayout.addView(widget);
            linearLayout.addView(layout);

            addView(linearLayout);

            setup();

            TabSpec spec = newTabSpec("tab1");
            spec.setIndicator("", getContext().getResources().getDrawable(R.drawable.ic_launcher));
            spec.setContent(new TabContentFactory() 
            {
                @Override
                public View createTabContent(String tag) 
                {
                    return new View(getContext());
                }
            });
            addTab(spec);

            spec = newTabSpec("tab2");
            spec.setIndicator("", getContext().getResources().getDrawable(R.drawable.ic_launcher));
            spec.setContent(new TabContentFactory() 
            {
                @Override
                public View createTabContent(String tag) 
                {
                    return new View(getContext());
                }
            });
            addTab(spec);

            spec = newTabSpec("tab3");
            spec.setIndicator("", getContext().getResources().getDrawable(R.drawable.ic_launcher));
            spec.setContent(new TabContentFactory() 
            {
                @Override
                public View createTabContent(String tag) 
                {
                    return new View(getContext());
                }
            });
            addTab(spec);

            spec = newTabSpec("tab5");
            spec.setIndicator("", getContext().getResources().getDrawable(R.drawable.ic_launcher));
            spec.setContent(new TabContentFactory() 
            {
                @Override
                public View createTabContent(String tag) 
                {
                    return new View(getContext());
                }
            });
            addTab(spec);
        }

    }
}

EDIT:

如果我在 MyTabHost 构造函数的末尾添加以下代码,我会得到下图。然而,图标仍然没有在选项卡中居中,而且它看起来并不是一段特别安全的代码。

还有比这更好的选择吗?或者关于这是否是一个合理选择的意见?

        post(new Runnable() 
        {

            @Override
            public void run() 
            {
                for(int i = 0; i < widget.getChildCount(); i++)
                {
                    widget.getChildAt(i).getLayoutParams().width = getWidth()/widget.getChildCount();
                }
            }
        });
    }

None

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

Android:选项卡不会用 Holo 主题填充父级? 的相关文章

随机推荐

  • 如何使用 boto3 客户端删除仍然可用的 HIT

    我有一些已发布的 HIT 可供工作人员使用 现在我想删除它们 尽管它们还没有被工作人员完成 根据此文档 这是不可能的 https boto3 amazonaws com v1 documentation api latest referen
  • React 功能组件:如何从外部访问变量 useEffect()

    我已经简化了下面的问题 我正在使用useEffect确保 dom 在选择项目之前已渲染 这非常有效 并且在尝试获取这些元素之前不需要超时 但是如果我想在另一个组件中使用这些值 如何访问它们 The printAll 函数找不到变量 impo
  • Java 泛型方法签名中的类型不匹配

    我有一个Executor调用接口实例的类IService
  • 使用 Android 的 BROTHER SDK 通过 WIFI 打印时出现 ERROR_WRONG_LABEL

    我有 Brother QL 710W 标签打印机 我尝试使用 Brother 的 SDK 通过 WIFI 进行打印 但每次都会收到 ERROR WRONG LABEL 错误 我努力了 尝试使用 Android Brother Sdk 进行标
  • 来自:“1 小时前”,至:timedelta + 准确度

    有没有 逆转人性化 时代的功能 例如 给定 字符串 1分钟前 7小时前 5天前 2个月前 可以返回 对伪代码表示歉意 datetime now 时间增量 1 分钟 精度 60 秒 datetime now 时间增量 7 小时 精度 1 小时
  • 解决歧义

    我有一个带有 3 个创建方法重载的控制器 public ActionResult Create public ActionResult Create string Skill int ProductId public ActionResul
  • 如何使用 C++ 将网站设置为 IE、Firefox、Chrome 和 Safari 的主页?

    有没有办法通过 C 或 C 将 google com 这样的网站设置为主页 如何 不确定你的动机是什么 但我不认为这是我希望我的系统上的任何代码从我的手下出发的事情 这听起来像是广告软件 恶意软件会对您的祖父母所做的事情 一旦设置 他们就不
  • 在 localhost 中使用 facebook 登录

    我正在做一个项目 需要使用facebook API作为用户登录 该文档清楚地说明了使用facebook登录的登录按钮的用法 但是 当我在本地主机上测试该按钮时 它没有给我任何信息 没有错误页面 没有弹出窗口 我正在使用 xampp 进行本地
  • 如何指定特定时区的“今天开始”?

    我有一个带有 时间戳与时区 列的表 我想找到时间戳早于今天的所有行 其中 今天 是在特定时区确定的 我知道如何使用at time zone将文字时间戳解释为处于某个特定时区 并且我知道如何使用date trunc以获得这一天的开始 但我不知
  • 如何在 HTML 中调用外部 JavaScript 函数

    我有一小块代码似乎无法工作 我正在构建一个网站并第一次使用 JavaScript 我的 JavaScript 代码位于外部文件 Marq Msg js 中 如下所示 var Messages new Array Messages 0 Thi
  • javascript中的赋值问题[重复]

    这个问题在这里已经有答案了 这是我正在尝试的代码 我唯一的问题是为什么我的代码没有在 projectAreaContextId 中分配 y 的值 编辑1 我已经更正了一些内容 var xhttp new XMLHttpRequest xht
  • Jquery无法在回调函数中访问$(this)

    我正在创建一个插件 但它无法访问 this 我的插件的简单概述是 function fn myPlugin function options callback return this each function this click fun
  • 使用结构时出现编译器错误 C2143

    我正在使用 Visual C 编译一个简单的 c 并使用 Compile as C Code TC 我收到这个编译器错误 错误 C2143 语法错误 缺少 在 输入 之前 在需要简单结构的行上 struct foo test 使用结构体的
  • 如何让 PyC​​harm 更快/更轻? [复制]

    这个问题在这里已经有答案了 我真的很喜欢 PyCharm 的想法并且很想使用它 然而 它会消耗计算机的处理能力和延迟 这是一个很大的缺点 在不久的将来 我将开设一门 Python 入门课程 并建议学生安装 PyCharm 因为它似乎是最友好
  • XSLT: 不起作用

    我的应用程序中有一个 servlet 过滤器 它拦截所有传入的请求 并尝试从传入的 XML 中去除空格 并将生成的 干净 XML 写入响应 我正在使用 XSLT 来实现这一点 请参阅下面的 XSLT
  • 从数据框中删除方括号[重复]

    这个问题在这里已经有答案了 我有以下数据帧格式的 adtaset 我需要从数据中删除方括号 我们该如何进行任何人都可以帮忙吗 From TO wrestle engage in a wrestling match write communi
  • QMap 支持自定义比较器函数吗?

    我找不到设置自定义比较器函数的方法QMap 就像我可以为std map the typename Compare std less lt Key gt 其模板参数的一部分 Does QMap有办法设置吗 没有记录 我认为这是一个错误 htt
  • Boost 测试不 init_unit_test_suite

    我运行这段代码 define BOOST TEST MAIN define BOOST TEST DYN LINK include
  • 一键安装 Ruby/Rails/SQLite?

    我习惯了一键安装本地环境MAMP http www mamp info en index html 是否有 Ruby 等效项 您可以下载并立即获得本地运行的最新版本的 Ruby Rails SQLite 我使用的是运行 Leopard 的
  • Android:选项卡不会用 Holo 主题填充父级?

    下面的代码创建一个包含 4 个选项卡的视图 使用默认主题 androidmanifest xml 中未定义主题 我得到第一个图像 其中选项卡均匀增长以填充可用空间 如果我将主题设置为android theme android style T