小编Luk*_*uke的帖子

ActionBarSherlock(ABS):如何自定义动作模式关闭项目的文本?

我正在使用ABS vers.4我需要简单地更改除动作模式关闭图标之外显示的默认"完成"文本,但我真的无法弄清楚如何做到这一点.

我认为文本需要可定制,至少有两个很好的理由:

  • "完成"不适合所有情境(例如"取消"可能更合适,我看过一些应用程序,例如Galaxy Tab上的"我的文件"应用程序,使用它)

  • "完成"需要根据用户的语言进行本地化

是否可以自定义该文本?如果是这样,谁能告诉我该怎么做?

提前致谢.

编辑

我找到了一个临时解决方法,我在下面发布:

private TextView getActionModeCloseTextView() {
    // ABS 4.0 defines action mode close button text only for "large" layouts
    if ((getResources().getConfiguration().screenLayout & 
        Configuration.SCREENLAYOUT_SIZE_MASK) == 
        Configuration.SCREENLAYOUT_SIZE_LARGE) 
    {
        // retrieves the LinearLayout containing the action mode close button text
        LinearLayout action_mode_close_button =
            (LinearLayout) getActivity().findViewById(R.id.abs__action_mode_close_button);
        // if found, returns its last child 
        // (in ABS 4.0 there is no other way to refer to it, 
        // since it doesn't have an id nor a tag) …
Run Code Online (Sandbox Code Playgroud)

android actionbarsherlock android-actionbar

12
推荐指数
4
解决办法
5179
查看次数

Android onConfigurationChanged:如何保存和恢复片段后端堆栈?

我有一个带有双窗格的活动:左侧的菜单项列表(片段M)和右侧当前所选项目的详细信息(片段D).

当用户选择片段D中的项目时,片段D将被另一个片段替换(让我们称之为D1).当用户选择片段D1中的项目时,片段D1将被另一个片段替换(让我们称之为D2),依此类推.当然,当用户按下后退按钮时,她可以返回片段历史记录:D2-> D1-> D.

我的问题是:如何在配置更改时保存和恢复完整的片段后备栈(特别是在屏幕方向上)?

我之前没有其他人遇到这个问题似乎很奇怪,但我在Google和Stack Overflow上的搜索过程中没有发现任何相关信息.如果我错过任何相关的帖子,请告诉我.

我知道我可以简单地将android:configChanges="orientation|screenSize"属性添加到我的活动中以避免活动娱乐,但我根本无法做到这一点.

我不能这样做的原因是我使用Action Bar Sherlock(第4节)来实现向后兼容性,并且该组件需要活动重新创建才能在配置更改时正常运行,AFAIK.

如果有其他方法重新创建Action Bar Sherlock组件而不破坏并重新创建活动,请告诉我.

提前致谢.

android onconfigurationchanged back-stack

8
推荐指数
2
解决办法
5037
查看次数

在屏幕旋转时切换ListView ChoiceMode时出现问题

我正在尝试基于Android文档末尾提供的有关Fragments 的示例代码构建拆分窗格,基本上是一个包含两个片段的LinearLayout(所有细节都可以在上面的链接中找到):

  • TitlesFragment 显示标题列表
  • DetailsFragment 显示当前所选标题的详细信息

我的问题是发生以下意外行为:

  1. 我以横向方向启动应用程序:标题列表显示在左侧,当前所选标题的详细信息(开头的第一个)显示在右侧.
  2. 我从标题列表中选择项目X:标题变为高亮显示,因为ListView设置为CHOICE_MODE_SINGLE并且其项目实现了Checkable界面.
  3. 我切换到纵向方向(通过旋转设备或模拟器):正如预期的那样,只显示标题列表,并且在此配置中没有选择任何项目,因为ListView被重新创建,默认情况下,它被设置为CHOICE_MODE_NONE.
  4. 我从标题列表中选择项目Y:如预期的那样,显示仅显示DetailsFragment与所做选择相对应的活动.
  5. 我切换回横向方向(这里是意外行为发生的地方):DetailsFragment右侧正确显示项目Y的详细信息(以纵向方向选择),但TitlesFragment仍然显示项目X为选中(即之前选择的项目)第一个屏幕旋转).

当然,我希望在纵向方向上进行的最后一次选择也正确显示在其中TitlesFragment,否则我最终会出现一个不一致的突出显示,在显示项目Y的详细信息时显示项目X.

我发布了更改ListView模式的相关代码(在'onActivityCreated'中)并且设置了所选项(在'showDetails'方法中):

public static class TitlesFragment extends ListFragment {
boolean mDualPane;
int mCurCheckPosition = 0;

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);

    // Populate list with our static array of titles.
    setListAdapter(new ArrayAdapter<String>(getActivity(),
            android.R.layout.simple_list_item_activated_1, Shakespeare.TITLES));

    // Check to …
Run Code Online (Sandbox Code Playgroud)

android

5
推荐指数
1
解决办法
1831
查看次数