2022年Android开发知识点总结_第1页
2022年Android开发知识点总结_第2页
2022年Android开发知识点总结_第3页
2022年Android开发知识点总结_第4页
2022年Android开发知识点总结_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何获取标题栏和状态栏高度1.获取状态栏高度:decorView是window中最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame办法可以获取到程序显示区域,涉及标题栏,但不涉及状态栏。于是可以算出状态栏高度了。Rectframe=newRect();getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);intstatusBarHeight=frame.top;2.获取标题栏高度:getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个办法获取到view就是程序不涉及标题栏某些,然后就可以懂得标题栏高度了。intcontentTop=getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();//statusBarHeight是上面所求状态栏高度inttitleBarHeight=contentTop-statusBarHeight;---------------------------------------------------------------------------------------------让EditTextView不能输入办法etNearbySearch.setFilters(newInputFilter[]{newInputFilter(){@OverridepublicCharSequencefilter(CharSequencesource,intstart,intend,Spanneddest,intdstart,intdend){returnsource.length()<1?dest.subSequence(dstart,dend):"";}}});---------------------------------------------------------------------------------------------全屏问题,在程序一加载时候就让它是全屏this.requestWindowFeature(Window.FEATURE_NO_TITLE);this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);AndroidManifest.xml中这样写<activityandroid:name=".TextButtonActivity"android:label="@string/app_name"android:theme="@android:style/Theme.NoTitleBar.Fullscreen">---------------------------------------------------------------------------------------------设立控件与否显示属性设立android属性android:visibility此属性意思是此视图与否显示,例如RelativeLayout中android:visibility="gone"其有三个属性:visible显示;invisible显示黑背景条;gone不显示在类中,可以设立其显示与否,setVisibility(View.GONE);不显示setVisibility(View.VISIBLE);显示---------------------------------------------------------------------------------------------为了避免软键盘挡上输入框,可以试试设立<activityandroid:windowSoftInputMode="stateVisible|adjustResize">或者<activityandroid:windowSoftInputMode="stateVisible|adjustPan">---------------------------------------------------------------------------------------------设立控件宽高,用setlayoutparams()办法---------------------------------------------------------------------------------------------做应用时,也许会需要动态变化控件背景图片,如果仅仅是简朴点击,选中之类事件,如果靠程序中写监听代码就显得太麻烦了,在这种状况下,你可以使用selector动态变化控件背景1、在res/drawable目录下建一种handlebackground.xml文献,依照需要,不同状态下建立不同item,并相应相应图片<?xmlversion="1.0"encoding="UTF-8"?><selectorxmlns:android=""><itemandroid:state_pressed="true"android:drawable="@drawable/pressed_application_background_static"/><itemandroid:state_focused="true"android:state_enabled="true"android:state_window_focused="true"android:drawable="@drawable/focused_application_background_static"/><itemandroid:drawable="@android:color/transparent"/></selector>2、在构造layout是引用这个xml<ImageButtonandroid:id="@+id/imagebutton"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/normalbackground"android:background="@drawable/handlebackground"></ImageButton>normalbackground.png为你要显示前景图片pressed_application_background_static.png为点击时背景(系统默以为淡黄色)focused_application_background_static.png为焦点停留时背景(系统默以为橙色)---------------------------------------------------------------------------------------------获得androidsdk版本,并设立动画效果intversion=Integer.valueOf(android.os.Build.VERSION.SDK);if(version>=5){overridePendingTransition(R.anim.zoomin,R.anim.zoomout);//此为自定义动画效果,下面两个为系统两个自定义动画效果XML文献,存储位置为:res/anim/1,动画进入效果:zoomin.xml<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android=""android:interpolator="@android:anim/decelerate_interpolator"><scaleandroid:fromXScale="2.0"android:toXScale="1.0"android:fromYScale="2.0"android:toYScale="1.0"android:pivotX="50%p"android:pivotY="50%p"android:duration="@android:integer/config_mediumAnimTime"/></set>复制代码2,动画退出效果:zoomout.xml<?xmlversion="1.0"encoding="utf-8"?><setxmlns:android=""android:interpolator="@android:anim/decelerate_interpolator"android:zAdjustment="top"><scaleandroid:fromXScale="1.0"android:toXScale=".5"android:fromYScale="1.0"android:toYScale=".5"android:pivotX="50%p"android:pivotY="50%p"android:duration="@android:integer/config_mediumAnimTime"/><alphaandroid:fromAlpha="1.0"android:toAlpha="0"android:duration="@android:integer/config_mediumAnimTime"/></set>---------------------------------------------------------------------------------------------获得控件在屏幕或窗口内坐标int[]location=newint[2];view.getLocationInWindow(location);//获取在当前窗口内绝对坐标view.getLocationOnScreen(location);//获取在整个屏幕内绝对坐标location[0]--->x坐标,location[1]--->y坐标---------------------------------------------------------------------------------------------控件对齐那点事android:gravity属性是对该view内容限定.例如一种button上面text.你可以设立该text在view靠左,靠右等位置.该属性就干了这个.android:layout_gravity是用来设立该view相对与起父view位置.例如一种button在linearlayout里,你想把该button放在靠左靠右等位置就可以通过该属性设立.---------------------------------------------------------------------------------------------几种Menu使用阐明1.OptionsMenu.通过按下手机上MENU键,可以打开OptionsMenu。OptionsMenu最多只能在屏幕最下面显示6个菜单项,称为IconMenu.如果添加了多于6个菜单项,将通过"More"菜单项显示,这种称为ExpandedMenu.当OptionsMenu第一次被打开时,系统将调用ActivityonCreateOptionsMenu(Menumenu)办法,在这个办法中可以通过配备一种XML文献,或者调用Menuadd()办法来添加你想要Menu。Menuadd()办法将返回一种MenuItem对象,你用通过这个对象来配备某些其她属性。例如:icon,shortcut,intent。Menuadd()办法诸多,要注意是itemId这个参数,它唯一性。当选取了一种OptionsMenu时,会调用onOptionsItemSelected(MenuItemitem)办法。如果想修改OptionsMenu,需要重写onPrepareOptionsMenu()办法。方式一,用add()添加:/*Createsthemenuitems*/publicbooleanonCreateOptionsMenu(Menumenu){menu.add(0,MENU_NEW_GAME,0,"NewGame");menu.add(0,MENU_QUIT,0,"Quit").setIcon(R.drawable.menu_quit_icon);returntrue;}/*Handlesitemselections*/publicbooleanonOptionsItemSelected(MenuItemitem){switch(item.getItemId()){caseMENU_NEW_GAME:newGame();returntrue;caseMENU_QUIT:quit();returntrue;}returnfalse;}方式二,通过XML文献添加:在res/menu/下新建options_menu.xml文献:Xml代码<menuxmlns:android=""><itemandroid:id="@+id/new_game"android:title="NewGame"/><itemandroid:id="@+id/quit"android:title="Quit"/></menu>在onCreateOptionsMenu()办法中,我们这样写:Java代码publicbooleanonCreateOptionsMenu(Menumenu){MenuInflaterinflater=getMenuInflater();inflater.inflate(R.menu.options_menu,menu);returntrue;}2.ContextMenu.它需要注册到某个View对象上,当长按这个View大概2秒时间,会浮现这个ContextMenu。为某个View注册ContextMenu是用registerForContextMenu(Viewview)办法来实现。ContextMenu在显示前都会调用onCreateContextMenu来生成menu。onContextItemSelected用来解决选中菜单项。注意:ContextMenu不支持icons和shortcutkeys.Java代码publicvoidonCreateContextMenu(ContextMenumenu,Viewv,ContextMenuInfomenuInfo){super.onCreateContextMenu(menu,v,menuInfo);menu.add(0,EDIT_ID,0,"Edit");menu.add(0,DELETE_ID,0,"Delete");}publicbooleanonContextItemSelected(MenuItemitem){AdapterContextMenuInfoinfo=(AdapterContextMenuInfo)item.getMenuInfo();switch(item.getItemId()){caseEDIT_ID:editNote(info.id);returntrue;caseDELETE_ID:deleteNote(info.id);returntrue;default:returnsuper.onContextItemSelected(item);}}注册这个ContextMenu:registerForContextMenu(getListView());这里getListView()是ListActivity办法,它将返回一种ListView.记住任何一种View对象都可以注册一种ContextMenu。3.SubmenuspublicbooleanonCreateOptionsMenu(Menumenu){booleanresult=super.onCreateOptionsMenu(menu);SubMenufileMenu=menu.addSubMenu("File");SubMenueditMenu=menu.addSubMenu("Edit");fileMenu.add(0,NEW_ID,0,"new");fileMenu.add(0,OPEN_ID,0,"open");fileMenu.add(0,SAV_ID,0,"save");editMenu.add(0,UNDO_ID,0,"undo");editMenu.add(0,REDO_ID,0,"redo");returnresult;}4.MenuFeaturesMenugroups菜单项分组功能:在用Menuadd()办法时,通过参数groupId设立可以实现分组。setGroupVisible()用来显示或者隐藏你菜单组。setGroupEnabled()用来启用或者禁用你菜单组。setGroupCheckable()用来设立你菜单项与否可选。setGroupCheckable()办法有三个参数intgroup,booleancheckable,booleanexclusive。第一种参数是要设立组,第二个参数与否可选,第三个参数为true表达单选,false表达多选。Shortcutkeys快捷键:我们还可以设立快捷键。使用setAlphabeticShortcut(char),setNumericShortcut(int),setShortcut(char,int)可以设立字符,数字,组合(字符+数字)键。注意:ContextMenu不能添加快捷键。---------------------------------------------------------------------------------------------点击查看活动规则TextView及其子类,当字符内容太长显示不下时可以省略号代替未显示字符;省略号可以在显示区域起始,中间,结束位置,或者以跑马灯方式显示文字(textview状态为被选中)。其实现只需在xml中对textviewellipsize属性做相应设立即可。android:ellipsize="start"省略号在开头android:ellipsize="middle"省略号在中间android:ellipsize="end"省略号在结尾android:ellipsize="marquee"跑马灯显示---------------------------------------------------------------------------------------------设立RadioButton前面图片,可定制呵呵<RadioGroupandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"android:checkedButton="@+id/lunch"android:id="@+id/menu"><RadioButtonandroid:text="@string/radio_group_1_breakfast"android:id="@+id/breakfast"android:button="@null"//自己找一种图片就可以/>RadioButton是可以自己定义button显示,我给例子就不显示button---------------------------------------------------------------------------------------------androidlistview分割线可以变化颜色<ListViewandroid:id="@+id/android:list"android:layout_width="wrap_content"android:layout_height="wrap_content"android:divider="#FFCC00"android:dividerHeight="4px"/>---------------------------------------------------------------------------------------------保持屏幕唤醒状态办法1:usePowerManagerandWakeLockAndroidManifest.xml权限:<uses-permissionandroid:name="android.permission.WAKE_LOCK"/>程序中代码:PowerManagerpm=(PowerManager)getSystemService(Context.POWER_SERVICE);PowerManager.WakeLockmWakeLock=pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK,"MyTag");//inonResume()callmWakeLock.acquire();...//inonPause()callmWakeLock.release();办法2:usethewindowflagFLAG_KEEP_SCREEN_ON把下面代码加入到程序onCreate办法中:@OverrideprotectedvoidonCreate(Bundleicicle){super.onCreate(icicle);//SetkeepscreenongetWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);}---------------------------------------------------------------------------------------------提示顾客输入有问题直接上代码Animationanimation=AnimationUtils.loadAnimation(this,R.anim.shake);EditTexteditText=(EditText)findViewById(R.id.edittext);editText.startAnimation(animation);里面面fromXDelta,toXDelta是表达x轴方向移动距离shake.xml:<translatexmlns:android=""android:fromXDelta="0"android:toXDelta="30"android:duration="1000"android:interpolator="@anim/cycle_interpolator"/>cycleInterpolator.xml文献:<cycleInterpolatorxmlns:android=""android:cycles="3"/>抖动3次---------------------------------------------------------------------------------------------TextView动态设立背景色et.setBackgroundResource(R.color.white);---------------------------------------------------------------------------------------------防止ListView滚动时候背景闪烁,需加上android:cacheColorHint="#00000000"如果设立了listviewandroid:background="@drawable/background"就要加上android:cacheColorHint="#00000000"---------------------------------------------------------------------------------------------通过添加一种id为android:emptyTextView,当ListView里面没有data时候,就会显示TextView内容。<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android=""android:layout_width="wrap_content"android:layout_height="wrap_content"><ListViewandroid:id="@id/android:list"android:layout_width="fill_parent"android:layout_height="fill_parent"/><TextViewandroid:id="@id/android:empty"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="对不起,没有数据显示"/></LinearLayout>需要注意是,ListViewid,使用是"@id/android:list",即系统默认id,而紧接其后TextView,使用id也是系统默认,即"@id/android:empty"。---------------------------------------------------------------------------------------------自定义控件单行文本跑马灯控件importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Paint;importandroid.os.Parcel;importandroid.os.Parcelable;importandroid.util.AttributeSet;importandroid.view.Display;importandroid.view.View;importandroid.view.WindowManager;importandroid.view.View.OnClickListener;importandroid.widget.TextView;/***//****TODO单行文本跑马灯控件**@authortianlu*@version1.0*CreateAt:-2-16下午09:35:03*/publicclassAutoScrollTextViewextendsTextViewimplementsOnClickListener{publicfinalstaticStringTAG=AutoScrollTextView.class.getSimpleName();privatefloattextLength=0f;//文本长度privatefloatviewWidth=0f;privatefloatstep=0f;//文字横坐标privatefloaty=0f;//文字纵坐标privatefloattemp_view_plus_text_length=0.0f;//用于计算暂时变量privatefloattemp_view_plus_two_text_length=0.0f;//用于计算暂时变量publicbooleanisStarting=false;//与否开始滚动privatePaintpaint=null;//绘图样式privateStringtext="";//文本内容publicAutoScrollTextView(Contextcontext){super(context);initView();}publicAutoScrollTextView(Contextcontext,AttributeSetattrs){super(context,attrs);initView();}publicAutoScrollTextView(Contextcontext,AttributeSetattrs,intdefStyle){super(context,attrs,defStyle);initView();}/***//***初始化控件*/privatevoidinitView(){setOnClickListener(this);}/***//***文本初始化,每次更改文本内容或者文本效果等之后都需要重新初始化一下*/publicvoidinit(WindowManagerwindowManager){paint=getPaint();text=getText().toString();textLength=paint.measureText(text);viewWidth=getWidth();if(viewWidth==0){if(windowManager!=null){Displaydisplay=windowManager.getDefaultDisplay();viewWidth=display.getWidth();}}step=textLength;temp_view_plus_text_length=viewWidth+textLength;temp_view_plus_two_text_length=viewWidth+textLength*2;y=getTextSize()+getPaddingTop();}@OverridepublicParcelableonSaveInstanceState(){ParcelablesuperState=super.onSaveInstanceState();SavedStatess=newSavedState(superState);ss.step=step;ss.isStarting=isStarting;returnss;}@OverridepublicvoidonRestoreInstanceState(Parcelablestate){if(!(stateinstanceofSavedState)){super.onRestoreInstanceState(state);return;}SavedStatess=(SavedState)state;super.onRestoreInstanceState(ss.getSuperState());step=ss.step;isStarting=ss.isStarting;}publicstaticclassSavedStateextendsBaseSavedState{publicbooleanisStarting=false;publicfloatstep=0.0f;SavedState(ParcelablesuperState){super(superState);}@OverridepublicvoidwriteToParcel(Parcelout,intflags){super.writeToParcel(out,flags);out.writeBooleanArray(newboolean[]{isStarting});out.writeFloat(step);}publicstaticfinalParcelable.Creator<SavedState>CREATOR=newParcelable.Creator<SavedState>(){publicSavedState[]newArray(intsize){returnnewSavedState[size];}@OverridepublicSavedStatecreateFromParcel(Parcelin){returnnewSavedState(in);}};privateSavedState(Parcelin){super(in);boolean[]b=null;in.readBooleanArray(b);if(b!=null&&b.length>0)isStarting=b[0];step=in.readFloat();}}/***//***开始滚动*/publicvoidstartScroll(){isStarting=true;invalidate();}/***//***停止滚动*/publicvoidstopScroll(){isStarting=false;invalidate();}@OverridepublicvoidonDraw(Canvascanvas){canvas.drawText(text,temp_view_plus_text_length-step,y,paint);if(!isStarting){return;}step+=0.5;if(step>temp_view_plus_two_text_length)step=textLength;invalidate();}@OverridepublicvoidonClick(Viewv){if(isStarting)stopScroll();elsestartScroll();}}实现了宽度判断,文本自动滚动及开始和停止滚动等功能。在UIxml中配备如下:<cn.tigertian.ui.AutoScrollTextViewandroid:id="@+id/TextViewNotice"android:layout_height="30px"android:layout_width="fill_parent"android:text="@string/test_notice_1"android:textColor="#000"android:inputType="text"android:background="#EEE"android:textSize="20px"></cn.tigertian.ui.AutoScrollTextView>在Activity中用法如下://启动公示滚动条autoScrollTextView=(AutoScrollTextView)findViewById(R.id.TextViewNotice);autoScrollTextView.init(getWindowManager());autoScrollTextView.startScroll();如果想变化跑马灯文字内容或者文字效果,则在调用完setText办法之后,需要再调用一下init(WindowManagerwindowManager)办法,重新进行初始化和有关参数计算。---------------------------------------------------------------------------------------------大概意思是。@和?都是用来引用其她已经定义好资源。@引用是之前定义好资源当前项目或者androidframework里。而?则是引用当前加载样式文献里。意思就是说你在xml里某行定义了一种资源,在下面某行需要引用这个资源时用?即可---------------------------------------------------------------------------------------------TabHost两种实现方式文章分类:Java编程第一种:继承TabActivity,从TabActivity中用getTabHost()办法获取TabHost。只要定义详细Tab内容布局就行了.xml布局:Java代码<FrameLayoutxmlns:android=""android:layout_width="fill_parent"android:layout_height="fill_parent"><LinearLayoutandroid:id="@+id/widget_layout_Blue"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><EditTextandroid:id="@+id/widget34"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="EditText"android:textSize="18sp"></EditText><Buttonandroid:id="@+id/widget30"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button"></Button></LinearLayout><LinearLayoutandroid:id="@+id/widget_layout_red"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><AnalogClockandroid:id="@+id/widget36"android:layout_width="wrap_content"android:layout_height="wrap_content"></AnalogClock></LinearLayout><LinearLayoutandroid:id="@+id/widget_layout_green"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><RadioGroupandroid:id="@+id/widget43"android:layout_width="166px"android:layout_height="98px"android:orientation="vertical"><RadioButtonandroid:id="@+id/widget44"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="RadioButton"></RadioButton><RadioButtonandroid:id="@+id/widget45"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="RadioButton"></RadioButton></RadioGroup></LinearLayout></FrameLayout>java代码:super.onCreate(savedInstanceState);myTabhost=this.getTabHost();//getTabhostLayoutInflater.from(this).inflate(R.layout.main,myTabhost.getTabContentView(),true);myTabhost.setBackgroundColor(Color.argb(150,22,70,150));myTabhost.addTab(myTabhost.newTabSpec("One")//makeanewTab.setIndicator("A")//settheTitleandIcon.setContent(R.id.widget_layout_Blue));//setthelayoutmyTabhost.addTab(myTabhost.newTabSpec("Two")//makeanewTab.setIndicator("B",getResources().getDrawable(R.drawable.mumule))//settheTitleandIcon.setContent(R.id.widget_layout_green));//setthelayoutmyTabhost.addTab(myTabhost.newTabSpec("Three")//makeanewTab.setIndicator("C",getResources().getDrawable(R.drawable.notepad))//settheTitleandIcon.setContent(R.id.widget_layout_red));<FrameLayoutxmlns:android="" android:layout_width="fill_parent"android:layout_height="fill_parent"> <LinearLayoutandroid:id="@+id/widget_layout_Blue" android:layout_width="fill_parent"android:layout_height="fill_parent" android:orientation="vertical"> <EditTextandroid:id="@+id/widget34"android:layout_width="fill_parent" android:layout_height="wrap_content"android:text="EditText" android:textSize="18sp"> </EditText> <Buttonandroid:id="@+id/widget30"android:layout_width="wrap_content" android:layout_height="wrap_content"android:text="Button"> </Button> </LinearLayout> <LinearLayoutandroid:id="@+id/widget_layout_red" android:layout_width="fill_parent"android:layout_height="fill_parent" android:orientation="vertical"> <AnalogClockandroid:id="@+id/widget36" android:layout_width="wrap_content"android:layout_height="wrap_content"> </AnalogClock> </LinearLayout> <LinearLayoutandroid:id="@+id/widget_layout_green" android:layout_width="fill_parent"android:layout_height="fill_parent" android:orientation="vertical"> <RadioGroupandroid:id="@+id/widget43" android:layout_width="166px"android:layout_height="98px" android:orientation="vertical"> <RadioButtonandroid:id="@+id/widget44" android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="RadioButton"> </RadioButton> <RadioButtonandroid:id="@+id/widget45" android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="RadioButton"> </RadioButton> </RadioGroup> </LinearLayout></FrameLayout>java代码:super.onCreate(savedInstanceState); myTabhost=this.getTabHost(); //getTabhost LayoutInflater.from(this).inflate(R.layout.main,myTabhost.getTabContentView(),true); myTabhost.setBackgroundColor(Color.argb(150,22,70,150)); myTabhost .addTab(myTabhost.newTabSpec("One")//makeanewTab .setIndicator("A") //settheTitleandIcon .setContent(R.id.widget_layout_Blue)); //setthelayout myTabhost .addTab(myTabhost.newTabSpec("Two")//makeanewTab .setIndicator("B", getResources().getDrawable(R.drawable.mumule)) //settheTitleandIcon .setContent(R.id.widget_layout_green)); //setthelayout myTabhost .addTab(myTabhost.newTabSpec("Three")//makeanewTab .setIndicator("C", getResources().getDrawable(R.drawable.notepad)) //settheTitleandIcon .setContent(R.id.widget_layout_red));第二种:不用继承TabActivity,在布局文献中定义TabHost即可,但是TabWidgetid必要是@android:id/tabs,FrameLayoutid必要是@android:id/tabcontent。TabHostid可以自定义.xml布局:Java代码<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android=""android:id="@+id/hometabs"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TabHostandroid:id="@+id/tabhost"android:layout_width="wrap_content"android:layout_height="wrap_content"><LinearLayoutandroid:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TabWidgetandroid:id="@android:id/tabs"android:orientation="horizontal"android:layout_width="wrap_content"android:layout_height="wrap_content"></TabWidget><FrameLayoutandroid:id="@android:id/tabcontent"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextViewandroid:id="@+id/view1"android:layout_width="fill_parent"android:layout_height="fill_parent"/><TextViewandroid:id="@+id/view2"android:layout_width="fill_parent"android:layout_height="fill_parent"/><TextViewandroid:id="@+id/view3"android:layout_width="fill_parent"android:layout_height="fill_parent"/></FrameLayout></LinearLayout></TabHost></LinearLayout>java代码:protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.hometabs);TabHosttabHost=(TabHost)findViewById(R.id.tabhost);tabHost.setup();TabWidgettabWidget=tabHost.getTabWidget();tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("tab1",getResources().getDrawable(R.drawable.mumule)).setContent(R.id.view1));tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("tab3").setContent(R.id.view3));tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("tab2").setContent(R.id.view2));finalinttabs=tabWidget.getChildCount();Log.i(TAG,"***tabWidget.getChildCount():"+tabs);finalinttabWidth=90;finalinttabHeight=45;for(inti=0;i<tabs;i++){/*finalViewview=tabWidget.getChildAt(i);view.getLayoutParams().width=tabWidth;view.getLayoutParams().height=tabHeight;finalTextViewtv=(TextView)view.findViewById(android.R.id.title);tv.setTextColor(this.getResources().getColorStateList(android.R.color.black));MarginLayoutParamstvMLP=(MarginLayoutParams)tv.getLayoutParams();tvMLP.bottomMargin=8;*/}}---------------------------------------------------------------------------------------------TextView显示图片和文字TextViewtext=(TextView

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论