我是Android新手,我刚创建了第一个TabHost。这是XML的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:weightSum="1">
<TextView
style="@style/NormalFont"
android:text="@string/stats"
android:layout_weight="0.10"/>
<TabHost
android:id="@+id/TabHostStats"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ScrollView
android:id="@+id/ScrollViewSmileyFilter"
android:scrollbars="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableLayout
android:id="@+id/TableLayoutSmileyFilter"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="*">
</TableLayout>
</ScrollView>
<ScrollView
android:id="@+id/ScrollViewADFilter"
android:scrollbars="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TableLayout
android:id="@+id/TableLayoutADFilter"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:stretchColumns="*">
</TableLayout>
</ScrollView>
</FrameLayout>
</LinearLayout>
</TabHost>
</LinearLayout>
这是活动的代码:
public class StatsActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stats);
TabHost host = (TabHost) findViewById(R.id.TabHostStats);
host.setup();
/** Dieser Code generiert den Tag für die Smileyfilter Stats**/
TabSpec SmileyFilterTab = host.newTabSpec("sftab");
SmileyFilterTab.setIndicator(getResources().getString(R.string.sfstats));
SmileyFilterTab.setContent(R.id.ScrollViewSmileyFilter);
host.addTab(SmileyFilterTab);
/**Dieser Code generiert den Tag für die Auto Delete Filter Stats **/
TabSpec AutoDeleteTab = host.newTabSpec("adtab");
AutoDeleteTab.setIndicator(getResources().getString(R.string.adstats));
AutoDeleteTab.setContent(R.id.ScrollViewADFilter);
host.addTab(AutoDeleteTab);
}
}
因此我的TabHosts的寄存器位于顶部。但我想按钮,我怎么能这样做?以及我如何以及在哪里可以改变它们的颜色。我希望它们不被黑色点亮,如果它们被点击为蓝色。
答案 0 :(得分:3)
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="3dp">
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignBottom = "@android:id/tabcontent"
/>
</RelativeLayout>
</TabHost>
要在屏幕底部创建选项卡布局,请在main.xml中的TabWidget中使用以下内容:
android:layout_alignBottom = "@android:id/tabcontent"
这是一些很好的例子
android-beginner-tutorials/tab-control/
/androidbottom-tabbar-control.html
Android remove space between tabs in tabwidget
答案 1 :(得分:3)
我见过很多实现。但是这个家伙我最喜欢。
他有一个tutorial和一个可下载的sample project。
修改强> 经过这么多年,这种联系似乎被打破了。所以这是代码。 这是一个alternate link,以防这里是代码。
图片强>
<强> TabsDemoActivity.java 强>
package com.bakhtiyor.android.tabs;
import android.app.TabActivity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TabHost;
import android.widget.TextView;
public class TabsDemoActivity extends TabActivity implements TabHost.TabContentFactory {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabHost = getTabHost();
tabHost.addTab(tabHost.newTabSpec("ebay").setIndicator("eBay").setContent(this));
tabHost.addTab(tabHost.newTabSpec("flickr").setIndicator("Flickr").setContent(this));
tabHost.addTab(tabHost.newTabSpec("skype").setIndicator("skype").setContent(this));
tabHost.addTab(tabHost.newTabSpec("you_tube").setIndicator("YouTube").setContent(this));
setupUI();
}
@Override
public View createTabContent(String tag) {
TextView tv = new TextView(this);
tv.setTextColor(Color.BLACK);
tv.setTextSize(20);
if (tag.equals("flickr")) {
tv.setText(R.string.flickr);
} else if (tag.equals("ebay")) {
tv.setText(R.string.ebay);
} else if (tag.equals("skype")) {
tv.setText(R.string.skype);
} else if (tag.equals("you_tube")) {
tv.setText(R.string.you_tube);
}
return tv;
}
private void setupUI() {
RadioButton rbFirst = (RadioButton) findViewById(R.id.first);
RadioButton rbSecond = (RadioButton) findViewById(R.id.second);
RadioButton rbThird = (RadioButton) findViewById(R.id.third);
RadioButton rbFourth = (RadioButton) findViewById(R.id.fourth);
rbFirst.setButtonDrawable(R.drawable.ebay);
rbSecond.setButtonDrawable(R.drawable.flickr);
rbThird.setButtonDrawable(R.drawable.skype);
rbFourth.setButtonDrawable(R.drawable.you_tube);
RadioGroup rg = (RadioGroup) findViewById(R.id.states);
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, final int checkedId) {
switch (checkedId) {
case R.id.first:
getTabHost().setCurrentTab(0);
break;
case R.id.second:
getTabHost().setCurrentTab(1);
break;
case R.id.third:
getTabHost().setCurrentTab(2);
break;
case R.id.fourth:
getTabHost().setCurrentTab(3);
break;
}
}
});
}
}
<强> main.xml中强>
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
<FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:padding="20dip" android:background="#fff"/>
<RadioGroup android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:checkedButton="@+id/first" android:id="@+id/states">
<RadioButton android:id="@+id/first" android:background="@drawable/button_radio" android:width="80dip" android:height="70dip" />
<RadioButton android:id="@+id/second" android:background="@drawable/button_radio" android:width="80dip" android:height="70dip" />
<RadioButton android:id="@+id/third" android:background="@drawable/button_radio" android:width="80dip" android:height="70dip" />
<RadioButton android:id="@+id/fourth" android:background="@drawable/button_radio" android:width="80dip" android:height="70dip" />
</RadioGroup>
<TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0" android:visibility="gone" />
</LinearLayout>
</TabHost>
<强>的strings.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, TabsDemoActivity!</string>
<string name="app_name">Tabs</string>
<string name="flickr">Flickr is an image and video hosting website, web services suite, and online community platform. In addition to being a popular website for users to share personal photographs, the service is widely used by bloggers as a photo repository. As of October 2009, it claims to host more than 4 billion images.</string>
<string name="ebay">eBay Inc. is an American Internet company that manages eBay.com, an online auction and shopping website in which people and businesses buy and sell a broad variety of goods and services worldwide.</string>
<string name="skype">Skype is a software application that allows users to make voice calls over the Internet. Calls to other users of the service and, in some countries, to free-of-charge numbers, are free, while calls to other landlines and mobile phones can be made for a fee. Additional features include instant messaging, file transfer and video conferencing.</string>
<string name="you_tube">YouTube is a video sharing website on which users can upload and share videos. Three former PayPal employees created YouTube in February 2005. In November 2006, YouTube, LLC was bought by Google Inc. for $1.65 billion, and is now operated as a subsidiary of Google.</string>
</resources>
<强> button_radio.xml 强>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:state_window_focused="false" android:drawable="@drawable/selected" />
<item android:state_checked="false" android:state_window_focused="false" android:drawable="@drawable/unselected" />
<item android:state_checked="true" android:state_pressed="true" android:drawable="@drawable/selected" />
<item android:state_checked="false" android:state_pressed="true" android:drawable="@drawable/unselected" />
<item android:state_checked="true" android:state_focused="true" android:drawable="@drawable/selected" />
<item android:state_checked="false" android:state_focused="true" android:drawable="@drawable/unselected" />
<item android:state_checked="false" android:drawable="@drawable/unselected" />
<item android:state_checked="true" android:drawable="@drawable/selected" />
</selector>
<强> selected.xml 强>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient android:startColor="#FFAAAAAA" android:endColor="#FF333333" android:angle="270" />
</shape>
<强> unselected.xml 强>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient android:startColor="#FF444444" android:endColor="#FF000000" android:angle="270" />
</shape>
修改强> 这里有几个其他的链接
http://www.anddev.org/code-snippets-for-android-f33/iphone-tabs-for-android-t14678.html