Вкладки не отвечают на state_pressed в Android программно или в XML - PullRequest
0 голосов
/ 17 марта 2012

В моем последнем семестре в колледже я занимаюсь старшим проектом и в основном отвечаю за дизайн.Раньше я никогда широко не кодировал, так что для меня все это ново.Я обнаружил, что если вы будете следовать учебному пособию для разработчиков 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  

Это делает мои вкладки красивыми небесно-голубыми, когда они выделены, и бледно-зелеными, когда они не выбраны.Но я не могу получить какие-либо яркие эффекты.У меня были проблемы с w / 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>

Надеюсь, мой вопрос имеет смысл.То, что я хотел бы сделать, это когда мой палец нажимают на вкладку, я хочу, чтобы он выделил что-то другое, пока я не отпущу, и тогда состояние «активной вкладки» может вступить во владение.

Спасибо залюбой совет!

...