最近在项目中遇到这样一个问题,大致是在页面中有两个按钮,负责切换两个页面,只是在原地切换。类似账单流水,显示充值,消费。
老规矩 上图,由于没有添加Select选择器,所以按钮没有点击效果。在运用中添加即可。通过android:button=”@null”属性去掉了RadioButon的圆点,完美替代Buton。这里TabWidget标签卡不能删除。原因是TabWidget与TabHost实现标签卡切换。
布局代码
<TabHost
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/console_line_bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<RadioGroup
android:id="@+id/main_tab_group"
android:background="@color/white"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<RadioButton
android:id="@+id/rb_tab_useCabage"
android:background="#00D4A0"
android:padding="10dp"
android:gravity="center_horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:checked="true"
android:textSize="16sp"
android:button="@null"
android:text="消费" />
<RadioButton
android:id="@+id/rb_tab_chongzhiCabage"
android:padding="10dp"
android:gravity="center_horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:button="@null"
android:textSize="16sp"
android:text="充值" />
</RadioGroup>
</LinearLayout>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="0.0dip"
android:layout_weight="1.0" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="0.0"
android:visibility="gone" />
</LinearLayout>
</TabHost>
逻辑代码
布局主要采用的TabHost+RadioButon实现切换FrameLayout来切换内容页面。在主代码中让Activity extends TabActivity ,这样主要使用其getTabHost()方法;通过RadioButton点击事件中设置tabHost.setCurrentTabByTag(“use”);通过Tag值关联到TabHost的创建的新的类页面:tabHost.addTab(tabHost.newTabSpec(“use”).setIndicator(“use”).setContent(new Intent(this, XiaoFeiCabageActivity.class)));从而实现了点击按钮,“原地”切换页面的功能,
public class XiaoFeiWater extends TabActivity implements OnClickListener {
TabHost tabHost;
private RadioButton rb_tab_useCabage,rb_tab_chongzhiCabage;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xiaofei_water);
initTab();
init();
}
/**
* 初始化数据
*/
private void init() {
rb_tab_useCabage = (RadioButton) findViewById(R.id.rb_tab_useCabage);
rb_tab_chongzhiCabage = (RadioButton) findViewById(R.id.rb_tab_chongzhiCabage);
rb_tab_useCabage.setOnClickListener(this);
rb_tab_chongzhiCabage.setOnClickListener(this);
}
/**
* 初始化Tab
*/
private void initTab() {
tabHost=getTabHost();
tabHost.addTab(tabHost.newTabSpec("use").setIndicator("use")
.setContent(new Intent(this, XiaoFeiCabageActivity.class)));
tabHost.addTab(tabHost.newTabSpec("chongzhi").setIndicator("chongzhi")
.setContent(new Intent(this, ChongZhiCabageActivity.class)));
}
/**
* 点击事件
* @param v
*/
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rb_tab_useCabage:
tabHost.setCurrentTabByTag("use");
break;
case R.id.rb_tab_chongzhiCabage:
tabHost.setCurrentTabByTag("chongzhi");
break;
default:
break;
}
}