继承的tabactivity怎么用appcompatactivity代替并实现tabactivity的的效果

 我来答
浅唱流年smile
2016-08-05 · 知道合伙人互联网行家
浅唱流年smile
知道合伙人互联网行家
采纳数:636 获赞数:3598
3年互联网行业从业经验,现在公司项目经理。

向TA提问 私信TA
展开全部
ActivityGroup在实际的开发中是十分常见的,在我使用过的Android应用中,十个应用里面有九个应用的主界面都是使用ActivityGroup的。说起ActivityGroup,在国内好像直接使用它开发的并不多,基本都是使用TabActivity,它是ActivityGroup唯一的一个子类。Android端新浪微博的主界面就是用TabActivity来实现的,还有其它的一些应用也几乎都用TabActivity来实现。在我眼里,TabActivity是Google提供的一个非常失败的API(至少我现在这么认为,下文我会说它失败在哪里),但中国几乎所有的应用都使用TabActivity,我不禁在思考这是巧合还是复制粘贴的产物。使用ActivityGroup(或者说TabActivity)开发出来的主界面效果图如下(涉及版权问题,我这里就不粘微博的主界面了,
ArtistActivity.java
public class ArtistActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
// 该文档将会作为标签的内容进行显示
textView.setText("艺术内容");
setContentView(textView);

}
}

MusicActivity.java
view plain
package cn.com.tagview;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MusicActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
// 该文档将会作为标签的内容进行显示
textView.setText("音乐内容");
setContentView(textView);
}
}
SportActivity.java
public class SportActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
// 该文档将会作为标签的内容进行显示
textView.setText("运动内容");
setContentView(textView);

}
}
ArtistActivity.java MusicActivity.java SportActivity.java三个activity是用做标签内容的activity。即当用户点击相应的标签时,下边会显示相应的activity内容。

ic_tab.xml代码
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item android:drawable="@drawable/grey"
android:state_selected="true"
></item>
<item android:drawable="@drawable/black"

></item>
</selector>
这里一定要注意ic_tab.xml文件的位置,是放在res/drawable文件夹下的。有些朋友说怎么没有这个文件夹啊,实际上大家看到了我将它放在了drawable-hdpi中了,实际上drawable-hdpi、drawable-ldpi、drawable-mdpi三个文件夹都属于drawable文件夹的哦。该文件它规定了,当标签获得焦点和失去焦点时,标签上显示什么图片。
例如本例中,就是当state_selected="true"(当标签被选中时),显示@drawable/grey指定的资源图片。当未被选中时,显示@drawable/black指定的资源图片。
tagView.java代码:
view plain
package cn.com.tagview;

import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;

public class TagView extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
// android代码中访问application资源的一个类
Resources resources = getResources();
// 获取当前activity的标签,该方法的实现中已经执行了setContentView(com.android.internal.R.layout.tab_content);
TabHost tabHost = getTabHost();
// 每一个标签项
TabHost.TabSpec spec;

// 声明一个意图,该意图告诉我们,下一个跳转到的activity是ArtistActivity。
Intent intent = new Intent(this, ArtistActivity.class);

spec = tabHost.newTabSpec("artist").setIndicator("艺术标签",
resources.getDrawable(R.drawable.ic_tab)).setContent(intent);
tabHost.addTab(spec);

Intent intent2 = new Intent(this, MusicActivity.class);
spec = tabHost.newTabSpec("music").setIndicator("音乐标签",
resources.getDrawable(R.drawable.ic_tab)).setContent(intent2);
tabHost.addTab(spec);

Intent intent3 = new Intent(this, SportActivity.class);
spec = tabHost.newTabSpec("sport").setIndicator("体育标签",
resources.getDrawable(R.drawable.ic_tab)).setContent(intent3);
tabHost.addTab(spec);

// tabHost.setCurrentTabByTag("music");设置第一次打开时默认显示的标签,该参数与tabHost.newTabSpec("music")的参数相同
tabHost.setCurrentTab(1);//设置第一次打开时默认显示的标签,参数代表其添加到标签中的顺序,位置是从0开始的哦。

}
}
匿名用户
2016-08-04
展开全部
然后直接上代码:
ArtistActivity.java
public class ArtistActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
// 该文档将会作为标签的内容进行显示
textView.setText("艺术内容");
setContentView(textView);

}
}

MusicActivity.java
view plain
package cn.com.tagview;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MusicActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
// 该文档将会作为标签的内容进行显示
textView.setText("音乐内容");
setContentView(textView);
}
}
SportActivity.java
public class SportActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView = new TextView(this);
// 该文档将会作为标签的内容进行显示
textView.setText("运动内容");
setContentView(textView);

}
}
ArtistActivity.java MusicActivity.java SportActivity.java三个activity是用做标签内容的activity。即当用户点击相应的标签时,下边会显示相应的activity内容。

ic_tab.xml代码
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android"
>
<item android:drawable="@drawable/grey"
android:state_selected="true"
></item>
<item android:drawable="@drawable/black"

></item>
</selector>
这里一定要注意ic_tab.xml文件的位置,是放在res/drawable文件夹下的。有些朋友说怎么没有这个文件夹啊,实际上大家看到了我将它放在了drawable-hdpi中了,实际上drawable-hdpi、drawable-ldpi、drawable-mdpi三个文件夹都属于drawable文件夹的哦。该文件它规定了,当标签获得焦点和失去焦点时,标签上显示什么图片。
例如本例中,就是当state_selected="true"(当标签被选中时),显示@drawable/grey指定的资源图片。当未被选中时,显示@drawable/black指定的资源图片。
tagView.java代码:
view plain
package cn.com.tagview;

import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;

public class TagView extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
// android代码中访问application资源的一个类
Resources resources = getResources();
// 获取当前activity的标签,该方法的实现中已经执行了setContentView(com.android.internal.R.layout.tab_content);
TabHost tabHost = getTabHost();
// 每一个标签项
TabHost.TabSpec spec;

// 声明一个意图,该意图告诉我们,下一个跳转到的activity是ArtistActivity。
Intent intent = new Intent(this, ArtistActivity.class);

spec = tabHost.newTabSpec("artist").setIndicator("艺术标签",
resources.getDrawable(R.drawable.ic_tab)).setContent(intent);
tabHost.addTab(spec);

Intent intent2 = new Intent(this, MusicActivity.class);
spec = tabHost.newTabSpec("music").setIndicator("音乐标签",
resources.getDrawable(R.drawable.ic_tab)).setContent(intent2);
tabHost.addTab(spec);

Intent intent3 = new Intent(this, SportActivity.class);
spec = tabHost.newTabSpec("sport").setIndicator("体育标签",
resources.getDrawable(R.drawable.ic_tab)).setContent(intent3);
tabHost.addTab(spec);

// tabHost.setCurrentTabByTag("music");设置第一次打开时默认显示的标签,该参数与tabHost.newTabSpec("music")的参数相同
tabHost.setCurrentTab(1);//设置第一次打开时默认显示的标签,参数代表其添加到标签中的顺序,位置是从0开始的哦。

}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式