标签: fragment-tab-host

如何在Android中实现自定义标签,如Instagram

我正在尝试在底部实现自定义选项卡UI,就像Instagram一样(截图已附上).我希望中间选项卡打开另一个活动,而不是在同一视图中打开一个片段. 在此输入图像描述

我觉得这是使用选项卡主机上的imagebutton overlay实现的.但是,我仍然无法正确放置该图像按钮,因此UI看起来很合适.下面是我底部标签的代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
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" />
<android.support.v4.app.FragmentTabHost
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_weight="0" />
</android.support.v4.app.FragmentTabHost>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

请帮助.

谢谢,

android android-tabs fragment-tab-host

5
推荐指数
1
解决办法
5881
查看次数

将片段添加到Tab主机

如何在android中使用tabhost 控制片段.我有一个活动和四个Fragements及其相应的xml文件.我在main_layout_activity.xml文件中添加我的标签主机.我有另一个Linnerlayout我想从Fragement.to替换这个linnerlayout替换这些Fragements我必须使用tabhost.help我好吗?我找到了一个代码,但它的messy.please找到了代码下方.

final TabHost tabs= (TabHost) findViewById(R.id.tabhost);
  tabs.setup();

  TabHost.TabSpec spec=tabs.newTabSpec("tag1");
  spec.setContent(R.id.fragment1);
  spec.setIndicator("View Raves");
  tabs.addTab(spec);
  spec=tabs.newTabSpec("tag2");
  spec.setContent(R.id.fragment2);
  spec.setIndicator("My Badges");
  tabs.addTab(spec);
  tabs.setCurrentTab(0); 
Run Code Online (Sandbox Code Playgroud)

在有了很多想法之后我会更正我的代码如下.请在下面找到

MainActivity.java

package com.example.testtabs;
import android.os.Bundle;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.app.TabActivity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabHost.TabSpec;
import android.support.v4.app.Fragment;
import com.example.testtabs.R;




public class MainActivity extends TabActivity  {


 TabHost tab;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);


  setContentView(R.layout.activity_main);


     FragementTest testfrag=new FragementTest();
  FragmentManager manager=getFragmentManager();
   FragmentTransaction transacti
  transaction.add(R.id.my_layout1, testfrag, ""); …
Run Code Online (Sandbox Code Playgroud)

android android-fragments fragment-tab-host

4
推荐指数
1
解决办法
6572
查看次数

为什么Tab主机不在android中显示图标?

这是设置tabhost的代码,但是有两个问题

  1. 如果文本太长,文本将转到下一行,我可以减小大小并将其强制为单行吗?
  2. 所有图标都不显示,即使我确定图像src是正确的

    public class MainActivity extends FragmentActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            FragmentTabHost tabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
    
            tabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
            tabHost.addTab(tabHost.newTabSpec("restaurant").setIndicator("Restaurant",getResources().getDrawable(R.drawable.food)),PlaceList.class, null);
            tabHost.addTab(tabHost.newTabSpec("attraction").setIndicator("Attraction",getResources().getDrawable(R.drawable.view)), PlaceList.class, null);
            tabHost.addTab(tabHost.newTabSpec("map").setIndicator("Map",getResources().getDrawable(R.drawable.map)),Map.class,null);
            tabHost.addTab(tabHost.newTabSpec("planner").setIndicator("Planner",getResources().getDrawable(R.drawable.plan)),Planner.class, null);
        }
     }
    
    Run Code Online (Sandbox Code Playgroud)

tabs android android-layout android-tabhost fragment-tab-host

4
推荐指数
1
解决办法
2593
查看次数

删除选项卡按钮周围的灰色边框(使用FragmentTabHost)

我正在使用FragmentTabHost来获取我的标签,但每个标签按钮周围都会出现灰色边框.请指导我摆脱这个灰色边框.见下面的附件: 在此输入图像描述

我希望它看起来像: 在此输入图像描述

我的布局是:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <FrameLayout
        android:id="@+id/realtabcontent"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_above="@+id/tabhost" />

    <android.support.v4.app.FragmentTabHost
        android:id="@+id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
         android:layout_alignParentBottom="true"
         >

        <FrameLayout
            android:id="@+id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
             />
    </android.support.v4.app.FragmentTabHost>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我的Android代码是:

mTabHost = (FragmentTabHost)findViewById(R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

        mTabHost.setBackgroundColor(Color.BLACK);


        mTabHost.addTab(mTabHost.newTabSpec(HOMETAB_TAG).setIndicator("" , getResources().getDrawable(R.drawable.home_selector)), HomeContainerFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec(QRTAB_TAG).setIndicator("", getResources().getDrawable(R.drawable.qr_selector)), QrContainerFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec(AROUNDTAB_TAG).setIndicator("", getResources().getDrawable(R.drawable.around_selector)), AroundContainerFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec(SHARETAB_TAG).setIndicator("", getResources().getDrawable(R.drawable.share_selector)), ShareContainerFragment.class, null);
        mTabHost.addTab(mTabHost.newTabSpec(MORETAB_TAG).setIndicator("", getResources().getDrawable(R.drawable.more_selector)), MoreContainerFragment.class, null);
Run Code Online (Sandbox Code Playgroud)

提前致谢.

android fragment-tab-host

2
推荐指数
1
解决办法
2525
查看次数

Android:TabHost将标签替换为另一个标签

我有一个包含5个标签的FragmentTabHost.其中一个加载ListFragment.单击列表中的项目时,我想将新片段加载到当前选项卡中.我似乎无法找到如何做到这一点.我唯一能做的就是用新内容发布一个全新的活动.我如何将新片段加载到活动选项卡中?

android android-fragments android-fragmentactivity fragment-tab-host

2
推荐指数
1
解决办法
3645
查看次数

Android:FargmentTabHost - 找不到ID为xxx的标签内容FrameLayout

我陷入了"No tab content FrameLayout found in XXX"错误.请帮忙.

我的代码如下:

主要活动

package com.example.demo;

import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;

import com.example.demo.fragments.StateFragment;


public class MainActivity extends AppCompatActivity {
    private FragmentTabHost mTabHost;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setSupportActionBar((Toolbar) findViewById(R.id.toolBar));
        initTabHost();
    }


    private void initTabHost(){
        mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
        mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
                StateFragment.class, null);
    }
}
Run Code Online (Sandbox Code Playgroud)

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary">

        <TextView …
Run Code Online (Sandbox Code Playgroud)

android fragment-tab-host

2
推荐指数
1
解决办法
2617
查看次数

findViewById(R.id.tabhost)始终返回null

我已经在Google Play中安装了一个应用程序,在我升级Android Studio之前完全没问题.必须修改build.gradle以便可以编译项目以下是我更改的内容:

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:appcompat-v7:21.0.0'
    compile 'com.google.android.gms:play-services:6+'
    compile 'com.android.support:support-v4:+'
}
Run Code Online (Sandbox Code Playgroud)

唯一的变化是com.android.support:appcompat-v7:+,它更改为com.android.support:appcompat-v7:21.0.0.

我的问题是.findViewById(R.id.tabhost)总是返回null,以便应用程序崩溃.这是我的布局文件:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
Run Code Online (Sandbox Code Playgroud)

我的java代码:

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTabHost;

public class MenuLeftFragment extends Fragment {
    private FragmentTabHost mFragmentTabHost;

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mView = getView();
        if (mView != null) {
            mFragmentTabHost = (FragmentTabHost) mView
                    .findViewById(R.id.tabhost);
Run Code Online (Sandbox Code Playgroud)

任何的想法?谢谢.

android fragment-tab-host

2
推荐指数
1
解决办法
568
查看次数

带有可绘制图标的FragmentTabHost

我在支持包中使用FragmentTabHost实现了标签,但是没有显示可绘制的图标?

如何使用FragmentTabHost显示可绘制图标?

mTabs = (FragmentTabHost)findViewById(android.R.id.tabhost);
mTabs.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

mTabs.addTab(mTabs.newTabSpec("chapter").setIndicator("Chapter",getResources().
getDrawable(R.drawable.chapter1)), ContentFragment.class, null);

mTabs.addTab(mTabs.newTabSpec("section").setIndicator("section",getResources().
    getDrawable(R.drawable.favourite1)), SectionFragment.class, null);
mTabs.addTab(mTabs.newTabSpec("video").setIndicator("Video",getResources().
    getDrawable(R.drawable.video1)),VideoFragment.class, null);
mTabs.addTab(mTabs.newTabSpec("about").setIndicator("About",getResources().
    getDrawable(R.drawable.about1)),AboutFragment.class, null);
Run Code Online (Sandbox Code Playgroud)

android android-support-library fragment-tab-host

1
推荐指数
1
解决办法
4258
查看次数

片段无法转换为android.support.v4.app.Fragment

我在实现Fragment tabhost时遇到此错误.

我基本上试图在选项卡视图中调用一个扩展Fragment的活动.

我也试过扩展FragmentActivity,但它在"onCreateView"方法上给出了错误.从"onCreateView"方法中删除@override注释,并运行应用程序导致以下错误.

    11-27 20:54:06.937: E/AndroidRuntime(4255): FATAL EXCEPTION: main
    11-27 20:54:06.937: E/AndroidRuntime(4255): java.lang.ClassCastException: com.variouscal.calculators.FragmentTab1 cannot be cast to android.support.v4.app.Fragment
    11-27 20:54:06.937: E/AndroidRuntime(4255):     at android.support.v4.app.Fragment.instantiate(Fragment.java:394)
    11-27 20:54:06.937: E/AndroidRuntime(4255):     at android.support.v4.app.FragmentTabHost.doTabChanged(FragmentTabHost.java:339)
    11-27 20:54:06.937: E/AndroidRuntime(4255):     at android.support.v4.app.FragmentTabHost.onTabChanged(FragmentTabHost.java:307)
    11-27 20:54:06.937: E/AndroidRuntime(4255):     at android.widget.TabHost.invokeOnTabChangeListener(TabHost.java:391)
    11-27 20:54:06.937: E/AndroidRuntime

(4255):     at android.widget.TabHost.setCurrentTab(TabHost.java:376)
11-27 20:54:06.937: E/AndroidRuntime(4255):     at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:150)
11-27 20:54:06.937: E/AndroidRuntime(4255):     at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:546)
11-27 20:54:06.937: E/AndroidRuntime(4255):     at android.view.View.performClick(View.java:4084)
11-27 20:54:06.937: E/AndroidRuntime(4255):     at android.view.View$PerformClick.run(View.java:16966)
11-27 20:54:06.937: E/AndroidRuntime(4255):     at android.os.Handler.handleCallback(Handler.java:615)
11-27 20:54:06.937: E/AndroidRuntime(4255):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-27 20:54:06.937: E/AndroidRuntime(4255):     at …
Run Code Online (Sandbox Code Playgroud)

android android-fragments fragment-tab-host

1
推荐指数
1
解决办法
1607
查看次数

Tabhost设置()不起作用

我按照Android文档中的教程如何在Fragment中使用Tabhost,但我总是得到

The method setup(android.content.Context, android.support.v4.app.FragmentManager, int) in the type FragmentTabHost is not applicable for the arguments (android.content.Context, android.app.FragmentManager, int)
Run Code Online (Sandbox Code Playgroud)

我的设置命令是这样的:

mTabHost.setup( getActivity().getApplicationContext(), getChildFragmentManager(), R.layout.fragment_vc_view);
Run Code Online (Sandbox Code Playgroud)

android android-tabhost fragment-tab-host

1
推荐指数
1
解决办法
1521
查看次数

片段重新初始化初始选项卡选项上的内容 - ANDROID

我有一个使用ViewPager的应用程序充当TabHost.问题是,当应用程序启动时,所有显示都很好,在所有3个选项卡之间滑动.

但是,在重新选择第一个选项卡时,应用程序将重新初始化但不显示正确的内容,应用程序应保留Fragments当前状态而不是重新初始化.

码:

TabAdapter.java

public class TabAdapter extends FragmentPagerAdapter{


public TabAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {

    switch(position){
        case 0:
            return new MapFragmentView();
        case 1:
            return new LogView();
        case 2:
            return new SettingsView();
    }

    return null;
}

@Override
public int getCount() {
    return 3;
}
Run Code Online (Sandbox Code Playgroud)

}

MapsActivity.java(主要活动)

public class MapsActivity extends FragmentActivity implements ActionBar.TabListener {

private ViewPager viewPage;
private TabAdapter myAdapter;
private ActionBar actionBar;
public static FragmentManager fragmentManager;

private String[] tabNames = {"Map", "Log" , "Settings"}; …
Run Code Online (Sandbox Code Playgroud)

tabs android android-fragments android-viewpager fragment-tab-host

1
推荐指数
1
解决办法
942
查看次数

在片段内创建标签

我从母亲的活动中得到了一个片段。现在我想在这个片段中创建标签。但是 tabHost.setup() 方法显示错误。我不明白,所以需要有关错误的线索。

// FragmentOne.java

package com.example.sharelocationui;

import android.app.Fragment;   
import android.os.Bundle;  
import android.support.v4.app.FragmentTabHost;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.ViewGroup;  
import android.webkit.WebView.FindListener;  
import android.widget.ImageView;  
import android.widget.TextView;  
import android.widget.TabHost;  

public class FragmentOne extends Fragment {


private FragmentTabHost tabHost;

public FragmentOne() {

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    super.onCreateView(inflater, container, savedInstanceState); 

    View v = inflater.inflate(R.layout.fragment_layout_one, container,
            false);

    tabHost = (FragmentTabHost) v.findViewById(R.id.testtabhost1);

    tabHost = new FragmentTabHost(getActivity());
    tabHost.setup(getActivity(),getChildFragmentManager(),R.id.testtabhost1); 

    tabHost.addTab(tabHost.newTabSpec("tab_test1").setIndicator("TAB1")); 
    tabHost.addTab(tabHost.newTabSpec("tab_test2").setIndicator("TAB2")); 
    tabHost.addTab(tabHost.newTabSpec("tab_test3").setIndicator("TAB3")); 
    tabHost.setCurrentTab(0); 

    return v; 
}

@Override
public void onDestroyView() { …
Run Code Online (Sandbox Code Playgroud)

android fragment android-tabs fragment-tab-host

0
推荐指数
1
解决办法
8951
查看次数