Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
覆盖Android GUI_Android_Android Layout - Fatal编程技术网

覆盖Android GUI

覆盖Android GUI,android,android-layout,Android,Android Layout,我正在做我的一个特别项目,应该可以定制一点Android用户的体验。 我们的想法是在每个活动中都应该有定制的导航按钮,允许用户在应用程序中来回移动 我知道Android基本上无法隐藏导航按钮(尤其是从4.x开始);但人们可以无视他们的行为 我的问题有两个方面: 是否可以自定义这些按钮(更改其外观、大小等) 如果无法做到这一点: 是否可以创建一个扩展活动并始终显示按钮的主类(以便在需要这些按钮时可以继承该类) 欢迎所有反馈和批评。 另外,如果你对如何解决这个问题有其他想法,或者你在一个项目

我正在做我的一个特别项目,应该可以定制一点Android用户的体验。 我们的想法是在每个活动中都应该有定制的导航按钮,允许用户在应用程序中来回移动

我知道Android基本上无法隐藏导航按钮(尤其是从4.x开始);但人们可以无视他们的行为

我的问题有两个方面:


  • 是否可以自定义这些按钮(更改其外观、大小等)
如果无法做到这一点:

  • 是否可以创建一个扩展活动并始终显示按钮的主类(以便在需要这些按钮时可以继承该类)
欢迎所有反馈和批评。
另外,如果你对如何解决这个问题有其他想法,或者你在一个项目中做了不同的事情,请给我指出正确的(主观的)方向


最好。

当然,您可以通过多种方式自定义现有的
视图:

  • 您可以更改其样式、背景、状态等
  • 您可以扩展现有视图(例如
    TextView
    )并添加属性
您还可以通过扩展
视图组
布局(线性、相对等)来定义自定义
视图组
。 最后,您可以从头开始创建视图,扩展
视图

请参阅有关自定义组件的文档

这让你几乎可以做任何事情

然而,我不建议你改变Android用户界面,因为用户对它很熟悉,而且我认为显示“过于定制”的用户界面不是一件好事

希望这对你有帮助


注意:如果你想定制Android ActionBar,你需要隐藏它并创建你自己的(或者使用ActionBarSherlock之类的LIB)

我认为你需要隐藏ActionBar


并创建一个类似的按钮(您自己的工具栏)。

好的,根据我的经验,我可以说您可以创建一个主类来扩展按钮,并且可以覆盖这些按钮的样式和行为!。这就是你想要的吗?不要改变任何会让你的用户界面变得陌生的东西。请参阅样式指南“可以自定义这些按钮(更改其外观、大小等)”——只需构建自己的ROM模块,其中包含修改后的系统栏代码。BACK、HOME等不能被SDK应用程序修改。@Kuffs我知道你在说什么。但在这里,我们谈论的是有特殊需求的用户,不幸的是,用户界面指南从使用这种惊人的技术中删去了这些需求。所以这是一个真正的需要。嗨,daigoor,我指的是导航栏。活动栏是另外一个东西。谢谢@CFlex我想这是我可能需要的。因此,您建议与其扩展Activity类的功能,不如扩展
视图组
。。。有什么理由认为这比扩展Activity类更好?关于自定义注释,请参阅主帖子中对@Kuffs的回复。@2dvisio,因为如果要自定义Android操作栏,您需要定义自己的(视图组或布局)。我不明白为什么覆盖活动的某些方法会让您自定义设计。顺便说一句,Android sdk不允许您自定义标准ActionBar。希望我说得够清楚
ActionBar actionBar = getActionBar();
actionBar.hide();