Android- 在没有 v4 支持库的片段中创建选项卡
Android- Create tabs inside fragment without v4 support library
我正在尝试使用支持库为我的应用程序创建 'tabs' w/o,但我什至没有在任何地方找到一个简单的工作 example/tutorial。
由于我的整个应用程序都在使用 android.app.fragment
,所以我无法将所有现有的 fragments
更改为 android.support.v4.app.Fragment
。
使用支持库在片段中创建一个选项卡是小菜一碟,但我想知道我们是否可以创建一个 w/o android.support.v4.app.Fragment
.
将片段放在布局中的选项卡内容中 XML 并将它们添加到 onCreate
中的 TabHost
。
这个可以实现,很简单,跟着我的步骤:
1.Copy将FragmentTabHost
的官方源代码添加到您的项目中,并更改以下3个class参考:
android.support.v4.app.Fragment
至 android.app.Fragment
android.support.v4.app.FragmentManager
到 android.app.FragmentManager
android.support.v4.app.FragmentTransaction
到 android.app.FragmentTransaction
2.Use 项目中 FragmentTabHost
的修改版本,忘记 android.support.v4
库。我编辑的版本:FragmentTabHost
示例代码:(显示第一个选项卡,延迟 5 秒后,您将看到第二个选项卡,我 运行 在我的 Android Studio 上成功!)
MainActivity.java
public class MainActivity extends Activity {
FragmentTabHost mTabHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTabHost = (FragmentTabHost) findViewById(R.id.tabhost);
mTabHost.setup(this, getFragmentManager(), R.id.container);
// Add each tab
mTabHost.addTab(mTabHost.newTabSpec("first").setIndicator("first"), BlankFragment1.class, null);
mTabHost.addTab(mTabHost.newTabSpec("second").setIndicator("second"), BlankFragment2.class, null);
mTabHost.postDelayed(new Runnable() {
@Override
public void run() {
mTabHost.setCurrentTabByTag("second");
}
}, 5000);
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<com.example.bill.myapplication.FragmentTabHost
android:layout_width="match_parent" android:layout_height="match_parent"
android:id="@+id/tabhost">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TabWidget
android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_width="0dp"
android:layout_height="0dp"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"/>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
</com.example.bill.myapplication.FragmentTabHost>
</RelativeLayout>
我正在尝试使用支持库为我的应用程序创建 'tabs' w/o,但我什至没有在任何地方找到一个简单的工作 example/tutorial。
由于我的整个应用程序都在使用 android.app.fragment
,所以我无法将所有现有的 fragments
更改为 android.support.v4.app.Fragment
。
使用支持库在片段中创建一个选项卡是小菜一碟,但我想知道我们是否可以创建一个 w/o android.support.v4.app.Fragment
.
将片段放在布局中的选项卡内容中 XML 并将它们添加到 onCreate
中的 TabHost
。
这个可以实现,很简单,跟着我的步骤:
1.Copy将FragmentTabHost
的官方源代码添加到您的项目中,并更改以下3个class参考:
android.support.v4.app.Fragment
至 android.app.Fragment
android.support.v4.app.FragmentManager
到 android.app.FragmentManager
android.support.v4.app.FragmentTransaction
到 android.app.FragmentTransaction
2.Use 项目中 FragmentTabHost
的修改版本,忘记 android.support.v4
库。我编辑的版本:FragmentTabHost
示例代码:(显示第一个选项卡,延迟 5 秒后,您将看到第二个选项卡,我 运行 在我的 Android Studio 上成功!)
MainActivity.java
public class MainActivity extends Activity {
FragmentTabHost mTabHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTabHost = (FragmentTabHost) findViewById(R.id.tabhost);
mTabHost.setup(this, getFragmentManager(), R.id.container);
// Add each tab
mTabHost.addTab(mTabHost.newTabSpec("first").setIndicator("first"), BlankFragment1.class, null);
mTabHost.addTab(mTabHost.newTabSpec("second").setIndicator("second"), BlankFragment2.class, null);
mTabHost.postDelayed(new Runnable() {
@Override
public void run() {
mTabHost.setCurrentTabByTag("second");
}
}, 5000);
}
}
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<com.example.bill.myapplication.FragmentTabHost
android:layout_width="match_parent" android:layout_height="match_parent"
android:id="@+id/tabhost">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TabWidget
android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_width="0dp"
android:layout_height="0dp"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"/>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
</LinearLayout>
</com.example.bill.myapplication.FragmentTabHost>
</RelativeLayout>