选项卡不以编程方式或XML方式响应Android中的state_pressed

时间:2012-03-17 16:47:44

标签: android xml tabs highlight

我在大学的最后一个学期做高级项目,我主要负责设计。我之前从未真正编过代,所以这对我来说都是新的。我发现,如果您按照默认的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>

希望我的问题有道理。我想要做的是当我的手指被按下一个标签时,我希望它突出显示不同的东西,直到我放开然后“活动标签”状态可以接管。

感谢您的任何建议!

0 个答案:

没有答案