我在使用ActionBarSherlock显示标签时遇到问题。我已经在我自己的应用程序中复制了actionbarsherlock演示的示例代码,如果我在像Nexus 7这样的7''显示中运行应用程序,则标签会出现在与标题相同的栏中。但是,如果我在同一设备中运行ABS样本标签出现在不同的栏中。
我的申请有什么问题?
这是我的代码:
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.widget.TextView;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.internal.ResourcesCompat;
import com.mbal.misseries.R;
public class ProvaDeFragments extends SherlockActivity implements ActionBar.TabListener {
private TextView mSelected;
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.Theme_Sherlock_Light); //Used for theme switching in samples
super.onCreate(savedInstanceState);
setContentView(R.layout.tab_navigation);
mSelected = (TextView)findViewById(R.id.text);
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
for (int i = 1; i <= 3; i++) {
ActionBar.Tab tab = getSupportActionBar().newTab();
tab.setText("Tab " + i);
tab.setTabListener(this);
getSupportActionBar().addTab(tab);
}
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction transaction) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction transaction) {
mSelected.setText("Selected: " + tab.getText());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction transaction) {
}
}
它显示如下:
但如果我运行样本ABS代码如下所示:
提前致谢!
答案 0 :(得分:0)
除了在有足够空间的设备上测试外,你没有做错任何事。 ; - )
根据Google开发者网站中的ActionBar文档:
如果要在活动中提供导航标签,请使用 动作栏的标签是一个很好的选择(而不是使用TabWidget), 因为系统会根据不同的屏幕调整操作栏选项卡 尺寸 - 在屏幕显示时将它们放置在主操作栏中 足够宽,或在一个单独的栏(称为“堆叠行动 栏“)当屏幕太窄时,如图9和图10所示。
如果你制作更长的标签,向条形图添加更多动作,和/或以更薄的视图(例如手机上的肖像)测试它,它应该自动将其分解为第二个条形图。
注意他们的例子中的视图(下面复制)第二个堆叠它们的视图比第一个视图要窄得多。
图9
图10