- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我找到了一种解决方法来实际启用嵌套 PreferenceScreen 上的 ActionBar 主页按钮...但是它不会在我的 PreferenceActivity 中调用 OnOptionsItemSelected。有人知道在嵌套的 PreferenceScreen 上实际使用主页按钮的方法吗?
此处修改后 35:
http://code.google.com/p/android/issues/detail?id=4611
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference)
{
super.onPreferenceTreeClick(preferenceScreen, preference);
if (preference!=null)
if (preference instanceof PreferenceScreen)
if (((PreferenceScreen)preference).getDialog()!=null)
((PreferenceScreen)preference).getDialog().getActionBar().setHomeButtonEnabled(true);
return false;
}
最佳答案
我最近遇到了这个问题,这就是我解决它的方法。首先要访问 PreferenceScreen,我使用您上面提到的完全相同的方法。
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
super.onPreferenceTreeClick(preferenceScreen, preference);
// If the user has clicked on a preference screen, set up the action bar
if (preference instanceof PreferenceScreen) {
initializeActionBar((PreferenceScreen) preference);
}
return false;
}
从这里我查看了 PreferenceScreen是的,我很伤心地发现它只是一个对话框的包装。继续前进,然后我设置操作栏显示选项并尝试找到主页按钮区域。不幸的是,这不太容易获得,但在层次结构查看器的帮助下,我设法通过找到主页图标然后找到它的父 View 来获得访问权限。一旦我们可以访问包含的 LinearLayout,我们就可以附加一个 onClickListener 来关闭 PreferenceScreen 的对话框,该对话框调用 PreferenceScreen's onDismissListener。并将我们返回到上一个屏幕。
/** Sets up the action bar for an {@link PreferenceScreen} */
public static void initializeActionBar(PreferenceScreen preferenceScreen) {
final Dialog dialog = preferenceScreen.getDialog();
if (dialog != null) {
// Inialize the action bar
dialog.getActionBar().setDisplayHomeAsUpEnabled(true);
// Apply custom home button area click listener to close the PreferenceScreen because PreferenceScreens are dialogs which swallow
// events instead of passing to the activity
// Related Issue: https://code.google.com/p/android/issues/detail?id=4611
View homeBtn = dialog.findViewById(android.R.id.home);
if (homeBtn != null) {
OnClickListener dismissDialogClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
};
// Prepare yourselves for some hacky programming
ViewParent homeBtnContainer = homeBtn.getParent();
// The home button is an ImageView inside a FrameLayout
if (homeBtnContainer instanceof FrameLayout) {
ViewGroup containerParent = (ViewGroup) homeBtnContainer.getParent();
if (containerParent instanceof LinearLayout) {
// This view also contains the title text, set the whole view as clickable
((LinearLayout) containerParent).setOnClickListener(dismissDialogClickListener);
} else {
// Just set it on the home button
((FrameLayout) homeBtnContainer).setOnClickListener(dismissDialogClickListener);
}
} else {
// The 'If all else fails' default case
homeBtn.setOnClickListener(dismissDialogClickListener);
}
}
}
}
关于java - 操作栏主页按钮不适用于嵌套的 PreferenceScreen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16374820/
我的应用程序中有一个标准的首选项页面。但是,当用户按下“管理收藏夹”时,我希望用户能够从这个首选项页面导航到另一个具有自定义布局的 PreferenceScreen。 这是我想到的自定义布局: 是否可
我正在以编程方式创建一组嵌套的 PreferenceScreen。当用户进入其中一个屏幕并点击其中的某个内容时,我想返回到之前的 PreferenceScreen(即“父级”)。 我找不到这方面的任何
我的应用以 API 28 为目标,并且至少有 API 15。作为支持库,我使用的是 AndroidX。 我有一个由 Activity 托管的偏好 fragment ,如下所示: SettingsFra
我遇到了以下(小但烦人!)问题:我有一个 PreferenceActivity,其 XML 偏好层次结构定义带有“sub PreferenceScreens”,即。 e.顶级 PreferenceSc
迁移到 AndroidX 并将目标 SDK 升级到 28 后,我的 SettingsPage 丢失了 PreferenceScreen 组件之间的分隔线,并且文本未左对齐。谁能帮忙? `
我是 Android 开发新手。我在我的 Android 应用程序中开发了一个首选项 Activity 。我想要一个 Preference 来打开一个常规的 Activity。我在我的 XML 文件中
PreferenceScreen 对我来说不够好,因为我必须向 Spinner 添加项目。这些项目需要来自数据列表。 我有一个自定义的 ArrayAdapter,它会在我单击它时返回项目的名称。它返回
我正在尝试构建一个测试,以使用 Espresso 验证我的 PreferenceScreen View 。我要单击的文本位于底部。那么如何使用 Espresso 在 PreferenceScreen
我从 the android documentation 得到以下代码 Android Studio 给我一个错误,说我在 PreferenceScreen 标签上缺少高度和
我创建了以下自定义首选项屏幕。 我想在 Button1 和 Button2 上添加监听器。我应该怎么做? 我正在使用以下代码创建上述首选项屏幕。 演示首选项: import android.app.A
我想去掉首选项 Activity 和所有子屏幕中的顶部标题栏。我现在面临的问题不是发生在果冻 bean 上,而是发生在旧版本上。如果我无法删除它,我想更改它的行为,以便子屏幕中的标题不会从列表项中转移
我有一个 xml 文件,它定义了一些偏好屏幕,如下例所示 .... 我希望能够增加首选项屏幕文本的字体大小,但是因为在首选项屏幕中没有 android:textsiz
我不知道如何在 PreferenceScreen 中实现向上按钮。向上按钮在您的应用程序图标旁边的操作栏中显示一个插入符号,允许您导航应用程序的层次结构,更多信息 here . 我有一个首选项 fra
我正在尝试创建一个 PreferenceScreen,但我希望 Activity 设计与整个项目一样。 如何创建自定义 PreferenceScreen 设计? 最佳答案 是的,这是可行的。为布局道歉
我的 PreferenceScreen 标题很长,尤其是在某些语言中。我可以为 CheckBoxPreference 或 ListPreference 设置多行标题: Android preferen
我在我的首选项屏幕上添加了一个小部件布局,显示一个箭头图标,以向用户表明在给定的 PreferenceScreen 后面还有更多首选项。 但是,我注意到当未启用 PreferenceScreen 时它
我有一个preferencescreen 页面只用于显示数据而不保存它用于设置 代码如下 现在我想知道如何
我正在运行时创建一个 PreferenceScreen。但是在尝试滚动时屏幕停电。 ListView有一个状态可以避免这种情况, android:cacheColorHint="@android:co
下面是首选项屏幕的截图: 我还包括布局和 java 代码: layout/toolbar.xml layout/activity_settings.xml xml/fragment
我找到了一种解决方法来实际启用嵌套 PreferenceScreen 上的 ActionBar 主页按钮...但是它不会在我的 PreferenceActivity 中调用 OnOptionsItem
我是一名优秀的程序员,十分优秀!