Android:在单个选项卡上锁定屏幕方向

Android:在单个选项卡上锁定屏幕方向,android,android-manifest,android-tabhost,screen-orientation,Android,Android Manifest,Android Tabhost,Screen Orientation,我有一个有五个选项卡的TabHost,我们称之为tab1-5 我希望表3保持纵向-我不希望它永远变成横向 我将如何实现这一点 这是我当前的代码(Main.class): public类主扩展碎片活动{ TabHost-mTabHost; TabManager-mTabManager; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.mai

我有一个有五个选项卡的TabHost,我们称之为tab1-5

我希望表3保持纵向-我不希望它永远变成横向

我将如何实现这一点

这是我当前的代码(Main.class):

public类主扩展碎片活动{
TabHost-mTabHost;
TabManager-mTabManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTabHost=(TabHost)findViewById(android.R.id.TabHost);
mTabHost.setup();
mTabManager=新选项卡管理器(this,mTabHost,R.id.realtabcontent);
addTab(mTabManager、mTabHost、新字符串(“Tab 1”)、新字符串(“Tab 1”),
表1.类别);
addTab(mTabManager、mTabHost、新字符串(“Tab 2”)、新字符串(“Tab 2”),
表2.类别);
addTab(mTabManager、mTabHost、新字符串(“Tab 3”)、新字符串(“Tab 3”),
表3.类别);
addTab(mTabManager、mTabHost、新字符串(“Tab 4”)、新字符串(“Tab 4”),
表4.类别);
addTab(mTabManager、mTabHost、新字符串(“联系人”)、新字符串(“联系人”),
表5.类别);
mTabHost.getTabWidget().getChildTabViewAt(0).setFocusable(false);
mTabHost.getTabWidget().getChildTabViewAt(1).setFocusable(false);
mTabHost.getTabWidget().getChildTabViewAt(2).setFocusable(false);
mTabHost.getTabWidget().getChildTabViewAt(3).setFocusable(false);
mTabHost.getTabWidget().getChildTabViewAt(4).setFocusable(false);
mTabHost.setSelected(假);
mTabHost.getTabWidget().setSelected(false);
如果(savedInstanceState!=null){
mTabHost.setCurrentTabByTag(savedInstanceState.getString(“tab”));
}
}
@凌驾
SaveInstanceState上受保护的无效(束超出状态){
super.onSaveInstanceState(超出状态);
putString(“tab”,mTabHost.getCurrentTabTag());
}
私有静态视图prepareTabView(上下文、字符串文本){
视图=布局更平坦。从(上下文)。充气(R.layout.tab_bg,空);
((TextView)view.findviewbyd(R.id.tabsText)).setText(text);
返回视图;
}
公共静态void addTab(TabManager管理器、TabHost主机、字符串标题、字符串标记、类别cl){
TabHost.TabSpec spec=host.newTabSpec(标记);
View=prepareTabView(host.getContext(),title);
规格设置指示器(视图);
manager.addTab(spec、cl、null);
}
公共静态类TabManager实现TabHost.OnTabChangeListener{
私人最终碎片活动;
私有最终选项卡主机mTabHost;
私有最终int mContainerId;
private final HashMap mTabs=new HashMap();
TabInfo mLastTab;
静态最终类TabInfo{
私有最终字符串标签;
私人期末班;
私有最终包args;
私有片段;
TabInfo(字符串标记、类、绑定参数){
标签=_标签;
clss=_类;
args=_args;
}
}
静态类DummyTabFactory实现TabHost.TabContentFactory{
私有最终上下文mContext;
公共DummyTabFactory(上下文){
mContext=上下文;
}
@凌驾
公共视图createTabContent(字符串标记){
视图v=新视图(mContext);
v、 设置最小宽度(0);
v、 设置最小高度(0);
返回v;
}
}
公共TabManager(FragmentActivity活动、TabHost TabHost、int containerId){
活动性=活动性;
mTabHost=tabHost;
mContainerId=集装箱id;
mTabHost.setOnTabChangedListener(此);
}
public void addTab(TabHost.TabSpec TabSpec,类cls,Bundle args){
tabSpec.setContent(新DummyTabFactory(mActivity));
String tag=tabSpec.getTag();
TabInfo=新TabInfo(标签、clss、参数);
info.fragment=mActivity.getSupportFragmentManager().findFragmentByTag(标记);
if(info.fragment!=null&&!info.fragment.isDetached()){
FragmentTransaction ft=MacActivity.getSupportFragmentManager().beginTransaction();
ft.detach(信息碎片);
ft.commit();
}
mtab.put(标签、信息);
mTabHost.addTab(tabSpec);
}
@凌驾
已更改的公共无效项(字符串选项卡ID){
TabInfo newTab=mTabs.get(tabId);
如果(mLastTab!=newTab){
FragmentTransaction ft=MacActivity.getSupportFragmentManager().beginTransaction();
如果(mLastTab!=null){
if(mLastTab.fragment!=null){
ft.分离(mLastTab.碎片);
}
}
if(newTab!=null){
if(newTab.fragment==null){
newTab.fragment=fragment.instantiate(mActivity,
newTab.clss.getName(),newTab.args);
ft.add(mContainerId,newTab.fragment,newTab.tag);
}否则{
ft.attach(newTab.fragment);
}
}
mLastTab=newTab;
ft.commit();
mActivity.getSupportFragmentManager().executePendingTransactions();
}
}
}
}

我从您的AndroidManiest.xml文件中假设您的每个选项卡都是活动。 如果是这样的话,那么看看

在Tab3活动类中,可以使用以下代码将活动锁定为纵向模式:

public class Tab3 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}

在所有其他选项卡活动中,您都可以打开。

我从您的AndroidManiest.xml文件中假设
public class Tab3 extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }
}
        android:screenOrientation="portrait"
 <activity
            android:name=".Main"
            android:screenOrientation="portrait" />