我在大学的最后一个学期做高级项目,我主要负责设计。我之前从未真正编过代,所以这对我来说都是新的。我发现,如果您按照默认的Android开发人员教程设置标签布局,那么这些灰度标签实际上会在按下时突出显示橙色。然后我关注了一些其他教程,这些教程将几个不同的XML文件合并到状态,什么不合并。
好吧,在我决定自定义应用程序之前,这很好。但是,在代码中我所做的是实现onTabChangeListener并实现此代码+方法:
for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)
{
tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#B4EEB4"));//unactive, light green
}
tabHost.getTabWidget().setCurrentTab(1);
tabHost.getTabWidget().getChildAt(1).setBackgroundColor(Color.parseColor("#95D8FF"));//active, sky blue
}
@Override
public void onTabChanged(String tabId) {
for(int i=0;i<tabHost.getTabWidget().getChildCount();i++)
{
tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#B4EEB4")); //inactive, light green
}
tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(Color.parseColor("#95D8FF"));//active, sky blue
这使我的标签在选中时显示为天蓝色,在未选中时显示为浅绿色。但我无法获得任何突出效果。在设置选项卡颜色时我遇到了XML问题所以我以编程方式进行了操作。此外,每当我编辑tab_bg_selected时,如果我使用
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:topLeftRadius="10dp"
android:bottomRightRadius="10dp"
android:bottomLeftRadius="10dp"/>
<gradient android:startColor="#95D8FF" android:centerColor="#3896DC"
android:endColor="#1870D0" android:angle="-90" />
</shape>
然后该选项卡的实际整个视图变为四舍五入。我想围绕我的标签,但它只是没有发生,很多实施标签的例子只是简单的混乱。有一个真的有帮助,但现在我想做更多。
我的主.java文件为每个标签都有3个单独的意图,因为我希望它们是不同的活动。所以我的例子就是我的代码只有一个标签的样子:
intent = new Intent().setClass(this, ClasslistTabActivity.class);
spec = tabHost.newTabSpec("classes").setIndicator("Classes",
res.getDrawable(R.drawable.ic_tab_classlist))
.setContent(intent);
以下是我的一些XML在新闻/过渡时的样子。
ic_tab_classlist.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Pressed -->
<item android:state_pressed="true" android:drawable="@drawable/onhighlight" />
<!-- When the tab is selected, use color-scale -->
<item android:drawable="@drawable/classlistroundedblueresize"
android:state_selected="true"/>
<!-- When the tab is not selected, use gray-scale -->
<item android:drawable="@drawable/classlistroundedblueunselected"
android:state_selected="false"/>
</selector>
tab_bg_selectedcl.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:topLeftRadius="10dp"
android:bottomRightRadius="10dp"
android:bottomLeftRadius="10dp"/>
<gradient android:startColor="#95D8FF" android:centerColor="#3896DC"
android:endColor="#1870D0" android:angle="-90" />
</shape>
onhighlight.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
android:background="#00eeee">
</shape>
layout_classlist.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabsLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/tab_bg_selectedcl"
android:gravity="center"
android:orientation="vertical"
android:padding="10dip" >
<TextView
android:id="@+id/tabsText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Title"
android:textColor="@drawable/tab_text_selector"
android:textSize="15dip" />
<RelativeLayout
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button
android:id="@+id/addCourseBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="29dp"
android:onClick="addCourse"
android:text="Add Course" />
</RelativeLayout>
</TableLayout>
希望我的问题有道理。我想要做的是当我的手指被按下一个标签时,我希望它突出显示不同的东西,直到我放开然后“活动标签”状态可以接管。
感谢您的任何建议!