千家信息网

android TabHost如何解决下面白线

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,android TabHost如何解决下面白线,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。我之前做分页都是用GridView和Acti
千家信息网最后更新 2025年02月02日android TabHost如何解决下面白线

android TabHost如何解决下面白线,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

我之前做分页都是用GridView和ActivityGroup实现的.因为觉得TabHost不好用,还有就是自己水平差的原因吧.如果帮的话,重写view任何问题都可以解决,呵呵,下面请看实现过程,其实很简单.
代码片段:

?


01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

public class MyActivity extends TabActivity {

private TabWidget tabWidget;

/** Called when the activity is first created. */

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Resources res = getResources(); // Resource object to get Drawables

final TabHost tabHost = getTabHost(); // The activity TabHost

TabHost.TabSpec spec; // Resusable TabSpec for each tab

Intent intent; // Reusable Intent for each tab

// Create an Intent to launch an Activity for the tab (to be reused)

intent = new Intent().setClass(this, ArtistsActivity.class);

// Initialize a TabSpec for each tab and add it to the TabHost

spec = tabHost

.newTabSpec("artists")

.setIndicator("Artists",

res.getDrawable(R.drawable.ic_tab_artists))

.setContent(intent);

tabHost.addTab(spec);

// Do the same for the other tabs

intent = new Intent().setClass(this, AlbumsActivity.class);

spec = tabHost

.newTabSpec("albums")

.setIndicator("Albums",

res.getDrawable(R.drawable.ic_tab_artists))

.setContent(intent);

tabHost.addTab(spec);

intent = new Intent().setClass(this, SongsActivity.class);

spec = tabHost

.newTabSpec("songs")

.setIndicator("Songs",

res.getDrawable(R.drawable.ic_tab_artists))

.setContent(intent);

tabHost.addTab(spec);

tabHost.setCurrentTab(2);

View v;

tabWidget = tabHost.getTabWidget();

for (int i = 0; i < tabWidget.getChildCount(); i++) {

// 获取tabview项

v = tabWidget.getChildAt(i);

// 设置tab背景颜色

v.setBackgroundResource(android.R.color.white);

// 获取textview控件,(默认为白色)

TextView textView = (TextView) v.findViewById(android.R.id.title);

textView.setTextColor(Color.BLACK);

// 默认选项要处理

if (tabHost.getCurrentTab() == i)

v.setBackgroundResource(R.drawable.renren_sdk_pay_repair_btn);

}

// tabchanged的监听

tabHost.setOnTabChangedListener(new OnTabChangeListener() {

// tabId显示的是:newTabSpec里面的值

@Override

public void onTabChanged(String tabId) {

// 首先把所有的view背景初始化了.

for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {

View v = tabHost.getTabWidget().getChildAt(i);

// 设置tab背景颜色

v.setBackgroundResource(android.R.color.white);

// 选中的进行处理

if (tabHost.getCurrentTab() == i) {

v.setBackgroundResource(R.drawable.renren_sdk_pay_repair_btn);

}

}

}

});

}

}



其实就是那几行加注释部分,相信你看一下就明白.

解决Tab下面白线方法:
首先我们要获取Tab的分页view和textview控件,因为textview默认字体是白色.我们要进行处理.获取后进行相应处理(也就是该加背景的加背景,该改变字体颜色的改变字体颜色).***我们要对TabHost进行监听(OnTabChangedListener);也不是什么监听,。就是用他的点击执行事件.

看完上述内容,你们掌握android TabHost如何解决下面白线的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

0