Как перейти к следующему макету (не активности) при нажатии кнопки? - PullRequest
0 голосов
/ 12 сентября 2011

Я хочу создать инструкцию, поэтому, когда пользователь нажимает следующую кнопку, я хочу установить на следующая страница макета. Я пытался setContentView(R.layout.aboutus);, но, похоже, установить новый верстка к конкретной странице.

Компоновка:

 <?xml version="1.0" encoding="UTF-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:background="#dddddd">
        <LinearLayout android:gravity="center" android:background = "@drawable/aboutus"
            android:orientation="vertical" android:layout_height="wrap_content"
            android:layout_width="wrap_content"/>
    </LinearLayout>

код:

 public void onItemClick(AdapterView<?> parent, View view, int position,
                long lg) {
            switch (position) {

            case 4:
                setContentView(R.layout.aboutus);
            }

        }

Итак, я хочу знать, как перейти к следующему макету без новых действий и могу вернуться на предыдущую страницу. Спасибо.

Ответы [ 4 ]

5 голосов
/ 12 сентября 2011

Вы должны использовать ViewFlipper.

Получить ссылку на ViewFlipper:

ViewFlipper myViewFlipper = (ViewFlipper) findViewById(R.id.my_viewFlipper);

Затем вы раздуваете каждую страницу как представление:

LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.your_layout_id, null);

А затем добавьте его в ViewFlipper:

myViewFlipper.addView( view );

Затем, когда пользователь нажимает кнопку для следующей страницы, вы вызываете этот метод:

myViewFlipper.showNext();

Или, если вы хотите предыдущую страницу:

myViewFlipper.showPrevious();
3 голосов
/ 12 сентября 2011

Используйте ViewSwitcher или ViewFlipper.

0 голосов
/ 12 сентября 2011

Может быть, вы могли бы сделать это:

Если у вас есть два разных макета и по одному на каждый раз.

Сначала получите идентификаторы каждого макета методом findviewbyid.

затем используйте

    firstlayout.setVisibility(View.VISIBLE).
     secondlayout.setVisibility(View.GONE);

для отображения первого макета.

Когда вы нажимаете кнопку, в ее клике слушатель делает

     firstlayout.setVisibility(View.GONE).
     secondlayout.setVisibility(View.VISIBLE);

это работает, но макеты должны быть отдельными.

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

0 голосов
/ 12 сентября 2011

Вы можете попытаться разместить ту же страницу в макете и установить для всех ее компонентов значение Visibility.GONE, а когда вы нажимаете кнопку, установить все видимые виджеты на УТВЕРЖДЕННЫЕ, а другие на Видимые. Или вы можете попробовать динамически раздувать процедуру (для раздувания ваших представлений), так как вы можете использовать отдельную разметку для раздувания представлений. Проверьте это для получения дополнительной информации о инфляции http://developer.android.com/reference/android/view/LayoutInflater.html

...