屏幕方向更改后,所选标签的标题消失

时间:2014-05-16 03:38:46

标签: android tabs textview screen-orientation

我使用android:configChanges不重新创建方向更改的活动,并且除了一件事情之外所有工作都很好,所选标签的标题在更改后消失,我不知道为什么。为了设置特定选项卡的警告,我使我的选项卡(actionbar.tab)获得自定义视图,可能问题在这里。 我已经用logcat做了一些测试,文本仍然在textview上。

 @Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);

    Log.e("irc", "Printing all the tab titles");

    for (int i = 0; i < actionBar.getTabCount(); i++) {
        ActionBar.Tab tab = actionBar.getTabAt(i);
        String texttab = ((TextView) tab.getCustomView().findViewById(
                R.id.tabtitle)).getText().toString();
        Log.e("irc", "Tab on " + i + ": " + texttab);
    }
// THE LOGCAT PRINTS ALL THE TAB TITLE, INCLUDING THE MISSING TITLE
}

也在Textview上尝试了View.VISIBLE和setTextColor()。

public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    RelativeLayout relative = (RelativeLayout) actionBar.getSelectedTab()
            .getCustomView();

    TextView tv = (TextView) relative.findViewById(R.id.tabtitle);

    tv.setVisibility(View.VISIBLE);
    tv.setTextColor(Color.WHITE);

//DOESNT WORK

}

标签自定义布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dip"
android:layout_height="64dip"
android:layout_marginLeft="-3dip"
android:layout_marginRight="-3dip"
android:layout_weight="1"
android:orientation="vertical" >

<TextView
    android:id="@+id/tabtitle"
    style="?android:attr/tabWidgetStyle"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true" />

</RelativeLayout>

变更前的活动: https://www.dropbox.com/s/m7ntqk7h4g9vraq/2014-05-16%2003.33.09.png

变更后的活动: https://www.dropbox.com/s/iltbsfcgfraowri/2014-05-16%2003.33.16.png

提前感谢您的帮助。

更新

我在操作栏上添加标签的活动方法。

public void addPVTTab(String title) {
    MyService.log("Adicionando tab " + title + ".");
    Tab tab = actionBar
            .newTab()
            .setCustomView(createTabCustomView(title))
            // .setText(title) customview
            .setTabListener(
                    new MyTabListener<ChatFragment>(this, title,
                            ChatFragment.class));
    actionBar.addTab(tab);

}

private RelativeLayout createTabCustomView(String title) {

    RelativeLayout view = (RelativeLayout) getLayoutInflater().inflate(
            R.layout.tabtitle_layout, null);

    ((TextView) view.findViewById(R.id.tabtitle)).setText(title);

    return view;

}

只要其他用户向我发送新的私人消息,就可以在此过程中的任何时间调用此消息。

1 个答案:

答案 0 :(得分:1)

我发现了这个问题,我遇到了这个错误:https://code.google.com/p/android/issues/detail?id=41392