我正在尝试创建一个自定义标题,但我不知道如何做到这一点。我一直在研究,但我总是遇到我的日食不会有的风格和东西的问题。 问题是我想要一些非常简单的东西。
Android 4.2.2中的屏幕将是这样的:
http://imageshack.us/a/img838/8840/89ur.png
我认为这是Android SDK 11的默认标头,依此类推。我一直在测试它改变清单android:targetSdkVersion和手机应用程序外观的变化。
问题是不同Android版本之间的兼容性。我已经看到应用程序在不同的设备上工作,这就是结果:
在Android 4.0.4中
http://imageshack.us/a/img600/6246/rdhl.png
在Android 2.3.6中
http://imageshack.us/a/img836/1599/ezit.png
您可以注意到标题甚至颜色和形状是如何变化的。 如果我创建一个自定义标题,它会在每个设备中以相同的方式显示,还是取决于Android版本?
我想为每台设备制作一个应用程序的唯一版本,是否可能? 如果可能的话,我想要第一张图片的下一个标题,并且,在红色矩形内,我想插入一张图片。如果我可以保留选项菜单(黄色方块),那就更好了。如果由于Android版本无法实现,则使用硬件按钮激活是没有问题的。 提前谢谢!
答案 0 :(得分:1)
这不实用,可能不推荐,但我所做的是使用以下方法在Android Manifest中隐藏动作栏/头部:
<activity
android:name=".My_Activity_Name"
android:theme="@android:style/Theme.NoTitleBar" />
然后,在我的activity的布局xml文件中,我只是自定义构建一个看起来像actionbar / header的标题。以下是我的某个应用中的示例:
这完全在xml文件中完成,但它看起来和正确的操作栏/标题一样真实。
修改强>
这是导航栏的xml布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="45dp"
android:background="@drawable/navbar_topxml"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="55dp"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="center" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/nav_back"
android:onClick="nav_back" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_weight="0.99"
android:orientation="horizontal" >
<TextView
android:id="@+id/tab_style"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
android:paddingLeft="5dp"
android:text="TITLE"
android:textColor="#888888"
android:textStyle="bold"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="center"
android:paddingLeft="20dp"
android:paddingRight="10dp" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="center" >
<ImageView
android:id="@+id/todo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/todo_off"
android:onClick="todo_toggle" />
</LinearLayout>
<LinearLayout
android:layout_width="10dp"
android:layout_height="fill_parent"
android:orientation="horizontal" >
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="center" >
<ImageView
android:id="@+id/favourite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/fav_off"
android:onClick="fav_toggle" />
</LinearLayout>
<LinearLayout
android:layout_width="10dp"
android:layout_height="fill_parent"
android:orientation="horizontal" >
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:gravity="center" >
<ImageView
android:id="@+id/done"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/done_off"
android:onClick="done_toggle" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
答案 1 :(得分:1)
这是评论中对n4h1n'问题的回复。
layout_action_bar.xml:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="46dp"
android:orientation="horizontal" >
<FrameLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5" >
<ImageView
android:id="@+id/imageSearch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/search" />
</FrameLayout>
<FrameLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="6" >
<TextView
android:id="@+id/textTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="24sp"
android:textColor="#FF9C00"
android:text="@string/turipolis" />
</FrameLayout>
<FrameLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="5" >
<ImageView
android:id="@+id/imageUser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/user" />
</FrameLayout>
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="8dp"
android:background="@drawable/action_bar_shadow" />
在您的活动XML中:
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/layout_action_bar" />
答案 2 :(得分:1)
我会认真推荐ActionBarSherlock,http://actionbarsherlock.com/。它真的是一个很棒的图书馆。你可以在http://actionbarsherlock.com/download.html找到它的一些代码演示,在这里找到它们的源代码https://github.com/JakeWharton/ActionBarSherlock/tree/master/actionbarsherlock-samples
但是我确实记得google宣布他们已经在他们的支持库中将ActionBar向后移植到2.1 http://developer.android.com/tools/support-library/index.html。在您计划使用它而不是扩展常规Activity类的活动中,您将扩展ActionBarActivity类。同样的逻辑在某种程度上适用于ActionBarSherlock,因为你将扩展SherlockActivity
答案 3 :(得分:0)
我要做的只是在清单中设置一个没有标题栏的主题,并在XML文件中包含一个自定义布局文件,这是您的标题栏。这确保了它在每个版本中都是相同的。它的好处是你可以做出一切。