我正在使用ActionBar Tabs开发一个Android项目。 选项卡在纵向模式下被视为选项卡,在横向视图中被视为下拉列表,如此处所述https://code.google.com/p/android/issues/detail?id=24439
我的目标是在纵向模式下将图像显示为标题页眉,在横向模式下显示文本标题。 我们的想法是使用自定义布局,仅显示所需的小部件。
这是我的代码
public class ResultListActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.addTab(actionBar
.newTab()
.setCustomView(
getTabHeaderView(R.string.tab_recommended,
R.drawable.ic_action_good))
.setTabListener(
new TabListener<RecommendedFragment>(
RecommendedFragment.class)));
actionBar.addTab(actionBar
.newTab()
.setCustomView(
getTabHeaderView(R.string.tab_favorites,
R.drawable.ic_action_important))
.setTabListener(
new TabListener<FavoritesFragment>(
FavoritesFragment.class)));
actionBar
.addTab(actionBar
.newTab()
.setCustomView(
getTabHeaderView(R.string.tab_nearest,
R.drawable.ic_action_place))
.setTabListener(
new TabListener<NearestFragment>(
NearestFragment.class)));
actionBar.addTab(actionBar
.newTab()
.setCustomView(
getTabHeaderView(R.string.tab_cheapest,
R.drawable.ic_action_dollar_sign))
.setTabListener(
new TabListener<CheapestFragment>(
CheapestFragment.class)));
}
private View getTabHeaderView(final int text, final int drawable) {
View v = getLayoutInflater().inflate(R.layout.tab_header, null);
((ImageView) (v.findViewById(R.id.tabIcon))).setImageResource(drawable);
((TextView) (v.findViewById(R.id.tabText))).setText(text);
return v;
}
private class TabListener<T extends Fragment> implements
ActionBar.TabListener {
....
}
}
我在文件夹R.layout.tab_header
和layout-port
中创建了两个描述layout-land
的XML,其中包含以下内容
layout-land \ tab_header.xml(ImageView
已消失)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/tabIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:padding="2dp"
android:visibility="gone" />
<TextView
android:id="@+id/tabText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:visibility="visible" />
</LinearLayout>
layout-port \ tab_header.xml(TextView
已消失)
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/tabIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:paddingTop="2dp"
android:visibility="visible"/>
<TextView
android:id="@+id/tabText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:visibility="gone" />
</LinearLayout>
但结果令人困惑。 (我有截图,但我不允许发布它们,抱歉)。
因此问题:应用程序出了什么问题,也许,这个概念? 也许,这是在方向变化期间控制标签行为的某种方式吗?
答案 0 :(得分:1)
即使您没有为ActionBar本身使用自定义视图,仍然需要调用
setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
你的ActionBar上的。我今天遇到了同样的问题,这就解决了这个问题。