Как сделать горизонтальную переключаемую деятельность

У меня есть приложение о долгах перед пользователем и о долгах пользователя. Основное действие — TabActivity для переключения двух действий с пользовательскими списками.


Это выглядит так (скриншот): http://i.stack.imgur.com/qts1f.png< /а>

Код:

public class MainActivity extends TabActivity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Resources res = getResources(); // Resource object to get Drawables
        TabHost tabHost = getTabHost();  // The activity TabHost
        TabHost.TabSpec spec;  // Resusable TabSpec for each tab
        Intent intent;  // Reusable Intent for each tab

        TextView tv = (TextView)findViewById(R.id.newDebtHeader);
        tv.setBackgroundResource(R.drawable.grad);
        tv.setTextColor(Color.BLACK);
        tv.setFadingEdgeLength(3);

        intent = new Intent().setClass(this, DebtsToMeList.class);

        spec = tabHost.newTabSpec("debts_to_me").setIndicator(null, res.getDrawable(R.drawable.ic_tab_debts_to_me)).setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, MyDebtsList.class);

        spec = tabHost.newTabSpec("my_debts").setIndicator(null, res.getDrawable(R.drawable.ic_tab_my_debts)).setContent(intent);
        tabHost.addTab(spec);

        tabHost.setCurrentTab(2);
    }
}

main.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:padding="1dp">

    <TextView 
        android:id="@+id/newDebtHeader" 
        android:layout_height="24dip"
        android:layout_width="fill_parent"
        android:gravity="center_vertical|center_horizontal"
        android:textStyle="bold"
        android:textSize="16dip" 
        android:text="хДолги">
    </TextView> 
    <TabHost 
        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"
            android:padding="5dp">
            <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"
                android:padding="5dp" />
        </LinearLayout>
    </TabHost>
</LinearLayout>
enter code here

Но мне не нравится TabActivity, я хочу изменить эти два списка горизонтальным перетаскиванием пальца. Не могли бы вы помочь мне изменить мой код?


person pbelov    schedule 02.01.2011    source источник


Ответы (2)


Если вы посмотрите на этот пример, он использует жест броска с переключателем видов и небольшой анимацией, чтобы получить эффект, который, я думаю, вы ищете... все, что вам нужно сделать, это загрузить свои списки, а затем вы сможете проведите пальцем между ними.

Надеюсь это поможет.

person Brian ONeil    schedule 02.01.2011
comment
Спасибо! Это хороший пример. Но я заметил еще две проблемы... 1-я - касание в списке, уже переданном списком, 2-я - вкладки не переключаются методом tabHost.setCurrentTab(1); (он должен переключиться на другую вкладку, но ничего не происходит. Мне нужно вызвать какой-то метод, чтобы принудительно перерисовать...) - person pbelov; 03.01.2011
comment
Я решил свою проблему. Теперь работает так, как я хочу. Для переключения вкладок необходимо использовать цифры 0 и 1 вместо 1 и 2. - person pbelov; 12.01.2011

Мне кажется, что вы хотите использовать галерею, где адаптер галереи создает ваши собственные представления списка. К сожалению, это не так просто, как может показаться. См. Встраивание ListView в галерею.

person jkschneider    schedule 02.01.2011