【问题标题】:How to add tab inside fragment in android?如何在android中的片段内添加标签?
【发布时间】:2014-06-02 06:43:34
【问题描述】:

我尝试在片段中添加标签。我可以添加但特定标签的内容与标签重叠

MainFragmentActivity.java

   public class MainActivity extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);     
    Fragment fragment= new FragmentTab();
        getSupportFragmentManager().beginTransaction().add(R.id.content_frame,fragment).commit();
 }

   }

activity_main.xml

<LinearLayout 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:orientation="vertical" >

  <FrameLayout
    android:id="@+id/content_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />  
   </LinearLayout>

FragmentTab.java

 public class FragmentTab extends Fragment {
public FragmentTab() {

}
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

FragmentTabHost mTabHost;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle  
       savedInstanceState) {
    // TODO Auto-generated method stub
    View rootView = inflater.inflate(R.layout.fragment_tabs, container, false);

    mTabHost = (FragmentTabHost) rootView.findViewById(android.R.id.tabhost);
    mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);
    mTabHost.addTab(mTabHost.newTabSpec("fragmentb").setIndicator("Fragment A"),
            FragmentA.class, null);
    mTabHost.addTab(mTabHost.newTabSpec("fragmentc").setIndicator("Fragment B" ),
            FragmentB.class, null);

    return rootView;
}

 }

fragment_tabs.xml

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <FrameLayout
        android:id="@+id/realtabcontent"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
  </LinearLayout>

  </android.support.v4.app.FragmentTabHost>

FragmentA.java

public class FragmentB extends Fragment{

@Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle 
           savedInstanceState) {
    View rootView= inflater.inflate(R.layout.fragment_a, container,false);
        return rootView;
}
  }

fragment_a.xml

 <TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="FragmentA" />

 </LinearLayout>

FragmentB.java

 public class FragmentB extends Fragment{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle  
            savedInstanceState) {
        View rootView= inflater.inflate(R.layout.fragment_b, container,false);
        return rootView;
}
  }

fragment_b.xml

  <TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="FragmentB" />

   </LinearLayout>

截图:

任何建议都会有所帮助,我想要选项卡标题下方的选项卡片段的内容。 片段的内容与选项卡标题重叠。我使用 FragmentTabHost 在片段中使用选项卡布局强文本 请帮我解决这个问题。我想要标签页头下方的标签片段的内容。

【问题讨论】:

    标签: java android


    【解决方案1】:

    如果您的目标是 API17 +,我相信这对您有用。如果没有,你应该看看 ViewContainers 和可滑动的视图。

    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentTabHost;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    public class TabHostParentFragment extends Fragment {
    
    private FragmentTabHost tabHost;
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    tabHost = new FragmentTabHost(getActivity());
    tabHost.setup(getActivity(), getChildFragmentManager(), R.layout.my_parent_fragment);
    
    Bundle arg1 = new Bundle();
    arg1.putInt("Arg for Frag1", 1);
    tabHost.addTab(tabHost.newTabSpec("Tab1").setIndicator("Frag Tab1"),
        NewsFragment.class, arg1);
    
    Bundle arg2 = new Bundle();
    arg2.putInt("Arg for Frag2", 2);
    tabHost.addTab(tabHost.newTabSpec("Tab2").setIndicator("Frag Tab2"),
        MyNestedFragment2.class, arg2);
    
    return tabHost;
    }
    

    【讨论】:

    • 嗨@Soumil Deshpande..我的目标是api级别9。这适用于api级别9吗?
    • 此代码有效。非常感谢。我从昨天开始尝试解决此问题,但无法解决。您节省了我的时间。谢谢 Soumil Deshpande
    • 如何将 viewpager 集成到其中?有什么解决办法吗?
    猜你喜欢
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    相关资源
    最近更新 更多