gpt4 book ai didi

方向更改时的 Android ActionBar Tabs 行为

转载 作者:行者123 更新时间:2023-11-30 03:11:39 25 4
gpt4 key购买 nike

我正在开发一个带有 ActionBar 选项卡的 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 {
....
}
}

我在文件夹 layout-portlayout-land 中创建了两个描述 R.layout.tab_header 的 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>

但结果令人困惑。 (我有截图,但我还不能发布它们,抱歉)。

  • 当应用程序以纵向启动时,选项卡被视为图像。
  • 旋转设备后,选项卡会按预期变成带有文本标题的下拉菜单。
  • 但在我更改选项卡/下拉菜单后,选项卡又回到选项卡中,没有任何内容。

因此问题来了:这个应用程序有什么问题,也许这个概念有什么问题?也许,有什么方法可以在方向更改期间控制选项卡的行为?

最佳答案

即使您没有为 ActionBar 本身使用自定义 View ,仍然有必要调用

setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);

在你的 ActionBar 上。我今天遇到了同样的问题,这解决了它。

关于方向更改时的 Android ActionBar Tabs 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20850937/

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