Tab Widget在网格视图中使用android:configChanges =“orientation | keyboardHidden”但在其他Tab上工作时出现问题

时间:2013-01-28 12:07:47

标签: android permissions tabs android-manifest android-orientation

我遇到了我的问题.Thing是一个自定义的Tab Widget.In,它有多个 标签Home - News - Abc - PQR

活动应该是both orientation like portrait and landscape。因此,每个标签都有two xml用于存储在layout-port/file.xml的纵向和用于存储在layout-land/file.xml的景观

为了管理定位纵向到横向,我在每个活动中添加了android:configChanges="orientation|keyboardHidden"规则标记。

  • TAB_SAMPLE.java标签文件。
  • TAB_GROUP_ACTIVITY每个标签组活动文件
  • file.java任务文件

完成所有这些后,我在这里遇到问题:

如果我add android:configChanges =“orientation | keyboardHidden”rule tag in tab_sample活动,那么它的工作完美。喜欢管理不同的观点。港口陆地和陆地到港口,但它不在Home.java。

现在,如果我remove android:configChanges="orientation|keyboardHidden" rule tag in tab_sample活动,那么它的Home活动不适用于News.java

意思是当我改变方向时,保持相同的xml表单端口不使用layout-land.in它再次调用OnCreate()。

所以我发现may be issue is in Tab Widget.

更新

现在跟踪我的代码后,我得到的主要问题是网格视图活动,因为它唯一的活动无效。

Issue is between Tab host v/s Grid View。我不知道为什么它没有采用layout-land xml文件。我发现this是同一个问题但在该问题上没有重播

详见manifestfile.xml 我想在所有活动中保持肖像和风景。

Both XML File

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:3)

Oooohhh最后我得到了上述问题的解决方案。这很困难。

为了保持方向状态横向为纵向,反之亦然,我们通常会在活动下添加android:configChanges="keyboardHidden|orientation"属性标记。

但是may be issue is Tab_Group_ Activity因为我无法在GridView中维护状态。 Grid_File.java 只有一个java文件,它没有处理所有其他工作方向的完美工作。

现在,如果remove android:configChanges="keyboardHidden|orientation"来自TAB_SAMPLE.java,那么仅处理Grid_File.java而不是其他人。

mean that was keeping same Layout XML in landscape also where i have two separate XML File.

以下是我的解决方案:

我在add android:configChanges="keyboardHidden|orientation" 以及中有TAB_SAMPLE.java implement onConfigurationChanged(Configuration newConfig)并设置网格列数。比如gridView.setNumColumns(6);

@Override
    public void onConfigurationChanged(Configuration newConfig)
    {
        super.onConfigurationChanged(newConfig);
        // gridView.setSelection(index);
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
        {

            // Log.e("On Config Change", "LANDSCAPE");
            gridView.setNumColumns(6);

        } else
        {

            // Log.e("On Config Change", "PORTRAIT");
            gridView.setNumColumns(4);
        }
    }

通常我们会在活动或android:configChanges="keyboardHidden|orientation"下添加implementing onConfigurationChanged(Configuration newConfig)标记,但这里我写了两个。