ViewFlipper с переменным количеством линий компоновки

#android #imageview #android-linearlayout #viewflipper

#Android #просмотр изображений #android-linearlayout #viewflipper

Вопрос:

В моем приложении мне нужно использовать ViewFlipper для переключения экранов путем перетаскивания по сенсорному экрану. У меня есть ListView, который содержит некоторые элементы. Когда элемент выбран, я должен отобразить несколько изображений. Проблема в том, что количество изображений отличается от одного элемента к другому. Поэтому я думаю, что я должен создать LinearLayout и ImageView программно. Возможно ли то, что я пытаюсь сделать?

Заранее спасибо..

Вот код, который я пробовал :

 <?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:background="#000000"
    android:id="@ id/layout_main">

    <ViewFlipper android:id="@ id/details"
        android:layout_width="fill_parent" android:layout_height="fill_parent">

    </ViewFlipper>

</LinearLayout>
 

и в методе Oncreate() :

 for (int i = 0; i < jArray.length(); i  ) {
            LinearLayout l=new LinearLayout(this);
            l.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.FILL_PARENT));
            l.setBackgroundColor(0xFFFFFFFF);
            l.setOrientation(LinearLayout.VERTICAL);

            ImageView img = new ImageView(this);
            img.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                    LayoutParams.FILL_PARENT));
            //ImageView img1 = (ImageView) findViewById(R.id.photo1);
            Drawable image1 = ImageOperations(getBaseContext(), url[i]);
            img.setImageDrawable(image1);

            l.addView(img);
        }
 

но ничего не происходит. Я вижу только большой черный экран.

Комментарии:

1. вы добавляете linearlayout в viewflipper? Эта часть не видна в коде

2. В этом и заключалась проблема. Спасибо 🙂

Ответ №1:

Я точно не понял, что вы говорите, но раньше я работал над ViewFlipper. Я использую четыре линейных макета в качестве дочерних представлений для ViewFlipper, которые в xml. (где, как во-первых, я попытался добавить listviews непосредственно как дочерние просмотры, но добавление linearlayouts упростит)

и добавлены listviews, imageviews, как вы сказали, к соответствующим linearlayouts из кода Java.

и это сработало.

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

Вот мой код, который я использовал для xml :

 <RelativeLayout android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:id="@ id/tabrelay"
                android:gravity="center_horizontal"

                >      

    <ViewFlipper android:id="@ id/details" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        style="@style/FlipperMargins.flipper"
        >     


    <LinearLayout  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:orientation="vertical"
    android:id="@ id/list1"
    android:listSelector="@color/sprgreen"
    android:drawSelectorOnTop="true"
    android:background="@drawable/deckbackn"
    style="@style/Webview.view"

    />
     <LinearLayout 
    android:layout_width="@dimen/webViewWidth" 
    android:layout_height="@dimen/webViewHeight"
    android:layout_gravity="center"
    android:divider="@color/grey46"
    android:dividerHeight="1dp"
    android:id="@ id/list2"
    android:background="@drawable/white"
    style="@style/Webview.view"

    />
     <LinearLayout  
    android:layout_width="@dimen/webViewWidth" 
    android:layout_height="@dimen/webViewHeight"
    android:layout_gravity="center"
    android:orientation="vertical"
    android:id="@ id/list3"
    android:listSelector="@color/sprgreen"
    android:drawSelectorOnTop="true"
    android:background="@drawable/commentsbg"
    style="@style/Webview.view"

    />

   <WebView 
   android:id="@ id/helloWebView" 
   android:layout_width="@dimen/webViewWidth" 
   android:layout_height="@dimen/webViewHeight"
   android:layout_gravity="center"
   android:background="@drawable/white"
   style="@style/Webview.view"
   /> 
   </ViewFlipper>
   </RelativeLayout>
 

после этого вы можете получить идентификаторы linearlayouts из xml и добавить, какой сервер вы хотите, listviews и т.д. из java..,,

Комментарии:

1. Спасибо за ваш реплей. Я решил проблему, добавив LinearLayout create by code в ViewFlipper.

2. Если вам нравится ваша проблема, примите правильный ответ, который вам помог