gpt4 book ai didi

android - 带有自定义 View 的堆叠式 ActionBar 选项卡无法正确显示

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:20 25 4
gpt4 key购买 nike

使用操作栏选项卡时,如果选项卡内容太大而无法显示,有时它们会显示为“堆叠”。当我对选项卡内容使用自定义 View 时出现问题,它导致所选选项卡不显示在下拉列表中,并且一旦选择了一个选项卡,下拉列表就会消失,并出现小的空选项卡。

这是下拉菜单的屏幕截图,在选择一个项目之前:(请注意,即使选择了选项卡,也不会显示选项卡的内容) before selecting item

还有,选中item后,tabs不再堆叠,tabs的内容为空: after selecting item

这是我的代码,(请注意,我对选项卡使用自定义 View 只是为了演示问题)

public class ExampleActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

final TextView selectedTabText = new TextView(this);
setContentView(selectedTabText);

ActionBar.TabListener listener = new ActionBar.TabListener() {
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
TextView customView = (TextView) tab.getCustomView();
selectedTabText.setText(customView.getText());
}

@Override
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {

}

@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {

}
};

ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
addTab(actionBar, listener, "Tab one with a very long name");
addTab(actionBar, listener, "Tab two with a very long name");
addTab(actionBar, listener, "Tab three with a very long name");
addTab(actionBar, listener, "Tab four with a very long name");
}

private void addTab(ActionBar actionBar, ActionBar.TabListener listener, String text) {
ActionBar.Tab tab = actionBar.newTab();
TextView textView = new TextView(this);
textView.setText(text);
tab.setCustomView(textView);
tab.setTabListener(listener);
actionBar.addTab(tab);
}
}

最佳答案

这是一个已知错误,并且已经报告给错误跟踪器:

https://code.google.com/p/android/issues/detail?id=41392

为了解决这个问题,我用一个讨厌的 hack 禁用了操作栏折叠行为。应从 onStart Activity 方法调用以下方法:

/**
* SUPER hack to disable tab collapsing with smaller screens, which doesn't allow custom tab bar views to be used
* https://code.google.com/p/android/issues/detail?id=41392
*/
private void disableCollapsibleTabs() {
try {
ActionBar actionBar = getActionBar();
Field actionViewField = actionBar.getClass().getDeclaredField("mTabScrollView");
actionViewField.setAccessible(true);
Object mTabScrollView = actionViewField.get(actionBar);

Method setAllowCollapse = mTabScrollView.getClass().getDeclaredMethod("setAllowCollapse", boolean.class);
setAllowCollapse.setAccessible(true);
setAllowCollapse.invoke(mTabScrollView, false);

} catch (Exception e) {
Log.e("", "Error while disabling actionbar collapsible tabs", e);
}
}

关于android - 带有自定义 View 的堆叠式 ActionBar 选项卡无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21392818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com