我正在尝试在底部实现自定义选项卡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中使用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) 这是设置tabhost的代码,但是有两个问题
所有图标都不显示,即使我确定图像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
我正在使用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)
提前致谢.
我有一个包含5个标签的FragmentTabHost.其中一个加载ListFragment.单击列表中的项目时,我想将新片段加载到当前选项卡中.我似乎无法找到如何做到这一点.我唯一能做的就是用新内容发布一个全新的活动.我如何将新片段加载到活动选项卡中?
android android-fragments android-fragmentactivity fragment-tab-host
我陷入了"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) 我已经在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)
任何的想法?谢谢.
我在支持包中使用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) 我在实现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文档中的教程如何在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) 我有一个使用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
我从母亲的活动中得到了一个片段。现在我想在这个片段中创建标签。但是 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)