Android 向PreferenceActivity添加标题
所以我发现android PreferenceScreen的风格不是很友好。在显示首选项之前,是否有一种半简单的方法将标题(比如图像)添加到首选项屏幕?我目前正在扩展PreferenceActivity类,但是有人能告诉我如何在标题中添加线性布局吗Android 向PreferenceActivity添加标题,android,Android,所以我发现android PreferenceScreen的风格不是很友好。在显示首选项之前,是否有一种半简单的方法将标题(比如图像)添加到首选项屏幕?我目前正在扩展PreferenceActivity类,但是有人能告诉我如何在标题中添加线性布局吗 谢谢在我的应用程序中,我完全按照您的要求这样做: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState
谢谢在我的应用程序中,我完全按照您的要求这样做:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
setContentView(R.layout.preferences_layout);
}
在preferences\u layout.xml
文件中:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<ImageView
android:id="@+id/myCustomImageView"
android:src="@drawable/xmas"
android:layout_width="fill_parent"
android:layout_height="50dp"
/>
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/myCustomImageView"
/>
</RelativeLayout>
请注意xml中ListView
上设置的android:id
现在,您可以控制首选项屏幕的布局,只要使用内置首选项,就可以使用首选项的默认样式。Mircea方法有一个限制:您不能删除顶部的标题:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
...
这导致“
requestfeature()
必须在添加内容之前调用”“因此我发现android PreferenceScreen的风格不太友好”——这是因为您应该让它们单独使用。PreferenceScreen
的全部要点是让它们在不同的应用程序中看起来相同。谷歌没有像苹果那样执行人机界面准则;然而,精明的开发人员仍将尽可能与其他应用程序和操作系统保持一致。用户在博客评论和讨论板上嘲笑Android开发人员,因为他们不这么做,所以开发人员给了Android一个坏名声。请不要使用首选项屏幕
样式。是的,我知道。老实说,我不想触摸PreferenceScreen,但这并不能阻止客户的要求。然后让他们看一下这个StackOverflow评论。对客户来说:你并不比你的用户更重要,也不比平台更重要。Commonware就是一个很好的例子。与iPhone不同,Android针对不同的设备。使用默认设置意味着您的应用程序将在这些设备上工作,自定义客户端请求的首选项屏幕可能会导致特定设备出现问题。你的客户了解这一点吗?是的,他们了解,但是客户是一家大公司,有自己的一套“对”和“错”的想法。解决方案是使用ListView创建大量的活动,这些活动模仿偏好活动。基本上,我必须编写自己的listview、listview项、列表视图适配器、单击对话框,以及手动保存和检索SharedReference的代码。你得做你该做的。哦,我刚从你的评论中注意到,你已经用很难的方式解决了它。嗯……也许有人在寻找解决方案是的,有人这样做了:)这个解决方案非常有效,谢谢!正是我需要的。谢谢。这将在ICS设备和平板电脑上崩溃@Profete162它在ICS上不会崩溃。在调用super.onCreate
之前,您不能调用requestWindowFeature
吗?