# Panel mit Scrollbar?



## bruce85 (26. Nov 2012)

Hallo,
wie kann ich im Panel ein Scrollbar hinzufügen?
Ich versuch das schon seit tagen und hab statt Panel einfach mal ScrollView getestet, aber irgendwie kann ich im ScrollView nicht zeichnen, erhalten immer fehlermeldungen.

Im Panel Zeichne ich einige Bilder, daher wäre es nicht schlecht ein Scrollbar hinzuzufügen, indem man nach unten Scrollen kann, wenn dies möglich ist bei einem Panel.

Ich bedanke mich schonmal im Voraus.

MfG


----------



## Marco13 (26. Nov 2012)

// somewhere.add(panel); WEG
somewhere.add(new JScrollPane(panel)); // HIN


----------



## bruce85 (26. Nov 2012)

Danke Dir, aber ich kann JScrollPane in android nicht verwenden.

Gibt es eine andere möglichkeit?

MfG


----------



## Marco13 (26. Nov 2012)

Hoppala, sorry, hatte übersehen dass das in 'Mobile Geräte' stand  Mit 'Panel' kann ich da gerade nichts anfangen..


----------



## schlingel (26. Nov 2012)

Wo ist denn das Problem wenn du deine panel-view in die scrollview gibst?


----------



## bruce85 (26. Nov 2012)

Das hatte ich auch schon versucht:

```
panel = new Panel(this);
scrollView = new ScrollView(this);
scrollView.addView(panel);
```

Ich hab dann nur ein schwarzes Bild vor mir, in der ScrollView ist garnix zusehen.

MfG


----------



## schlingel (26. Nov 2012)

Fügst du denn diese scrollView auch deiner contentView hinzu?


----------



## bruce85 (26. Nov 2012)

Nein, da ich AdMob benutze, füge ich diese hier hinzu:

```
layout2.addView(scrollView);
```


```
panel = new Panel(this);
scrollView = new ScrollView(this);
scrollView.addView(panel);
setContentView(R.layout.activity_main);
AdRequest adRequest = new AdRequest();
adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
adView = new AdView(this, AdSize.BANNER, "************");
RelativeLayout layout2 = (RelativeLayout)findViewById(R.id.layout);
layout2.addView(scrollView);
layout2.addView(adView);
adView.loadAd(adRequest);
```

Wenn ich statt

```
layout2.addView(scrollView);
```
das hier eintrage:

```
layout2.addView(panel);
```

dann geht es ja auch, alse der inhalt von Panel wird ja dann angezeigt, nur hat der Panel allein kein ScrollBar.

Habe ich Vielleicht etwas falsch gemacht?

MfG


----------



## schlingel (26. Nov 2012)

1. Wäre das wohl im XML einfacher und mehr wie es Android eigentlich vorsieht. Aber das ist nur eine Randnotiz.
2. Bist du nicht der erste mit dem Problem. Hast du schon Dr. Google gefragt? Der spuckt z.B. das hier aus und das sieht für dich brauchbar aus.


----------



## bruce85 (26. Nov 2012)

Danke Dir.
Ich habe schon sehr viel gegoogelt, aber immer wenn ich eine ScrollView von XML auslese, dann  bekomme ich immer eine NullPointerException.

Ich werde es einfach nochmal versuchen und melde mich dann wieder.

MfG


----------



## bruce85 (26. Nov 2012)

Mit diese fehlermeldungen kämpfe ich schon seit Paar tagen:


```
11-26 20:00:24.358: D/AndroidRuntime(301): Shutting down VM
11-26 20:00:24.358: W/dalvikvm(301): threadid=3: thread exiting with uncaught exception (group=0x4001aa28)
11-26 20:00:24.358: E/AndroidRuntime(301): Uncaught handler: thread main exiting due to uncaught exception
11-26 20:00:24.367: E/AndroidRuntime(301): java.lang.RuntimeException: Unable to start activity ComponentInfo{eu.test.test/eu.test.test.TestActivity}: java.lang.NullPointerException
11-26 20:00:24.367: E/AndroidRuntime(301): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2417)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at android.app.ActivityThread.access$2100(ActivityThread.java:116)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at android.os.Handler.dispatchMessage(Handler.java:99)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at android.os.Looper.loop(Looper.java:123)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at android.app.ActivityThread.main(ActivityThread.java:4203)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at java.lang.reflect.Method.invokeNative(Native Method)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at java.lang.reflect.Method.invoke(Method.java:521)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at dalvik.system.NativeStart.main(Native Method)
11-26 20:00:24.367: E/AndroidRuntime(301): Caused by: java.lang.NullPointerException
11-26 20:00:24.367: E/AndroidRuntime(301): 	at android.view.ViewGroup.addView(ViewGroup.java:1701)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at android.view.ViewGroup.addView(ViewGroup.java:1688)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at eu.test.test.TestActivity.onCreate(TestActivity.java:325)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
11-26 20:00:24.367: E/AndroidRuntime(301): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
11-26 20:00:24.367: E/AndroidRuntime(301): 	... 11 more
11-26 20:00:24.387: I/dalvikvm(301): threadid=7: reacting to signal 3
11-26 20:00:24.587: I/dalvikvm(301): Wrote stack trace to '/data/anr/traces.txt'
```

und hier die xml:
[XML]<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:id="@+id/scrollView1">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >

        <eu.test.test.TestActivity.Panel
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />   

    </RelativeLayout>
</ScrollView>[/XML]

und hier der Code, wo ich es auslese:

```
panel = new Panel(this);
AdRequest adRequest = new AdRequest();
adRequest.addTestDevice(AdRequest.TEST_EMULATOR);
adView = new AdView(this, AdSize.BANNER, "*********");
scrollView = (ScrollView)findViewById(R.id.scrollView1);
RelativeLayout layout2 = (RelativeLayout)findViewById(R.id.layout);
layout2.addView(scrollView);
layout2.addView(adView);
adView.loadAd(adRequest);
```

*Edit:* sobald ich diese Zeile entferne:

```
layout2.addView(scrollView);
```
geht alles wieder, es liegt nur an der ScrollView.

Ich kann die ScrollView einfach nicht von der XML Datei lesen.

Woran könnte das Problem denn liegen?

MfG


----------



## schlingel (26. Nov 2012)

Was mich etwas verwirrt, warum findet er die ID R.id.layout obwohl du sie nicht definierst? Bist du dir sicher, dass du das richtige Layout-File als ContentView verwendest?


----------



## bruce85 (26. Nov 2012)

Danke Dir.
die id layout befindet sich in activity_main.xml.
Also dort wo ich contentView auf diese xml setze.

*Edit:* Der ScrollView befindet sich in activity_scroll.xml
Ich hab das dann mal versucht in activity_main.xml einzutragen, leider klappt das nicht, erhalte ebenfalls eine NullPointerException wie ich schon bereits oben gepostet hatte.

In der XML Datei ist der ScrollView gelb markiert, dass es in RelativeLayout nicht erlaubt ist.
Ich hab mal in anhang ein Screen hochgeladen.

Danke schonmal.

MfG


----------



## bruce85 (26. Nov 2012)

Ich hab das jetzt so gemacht:
[XML]<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

 <RelativeLayout 
    android:id="@+id/layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >

	<eu.test.test.TestActivity.Panel
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

 </RelativeLayout>
</ScrollView>[/XML]

Nur erhalte ich jetzt fehlers bei Panel:

```
11-26 22:52:11.156: E/AndroidRuntime(8322): FATAL EXCEPTION: main
11-26 22:52:11.156: E/AndroidRuntime(8322): java.lang.RuntimeException: Unable to start activity ComponentInfo{eu.test.test/eu.test.test.TestActivity}: android.view.InflateException: Binary XML file line #11: Error inflating class eu.test.test.TestActivity.Panel
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.app.ActivityThread.access$1500(ActivityThread.java:117)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.os.Handler.dispatchMessage(Handler.java:99)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.os.Looper.loop(Looper.java:130)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.app.ActivityThread.main(ActivityThread.java:3687)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at java.lang.reflect.Method.invokeNative(Native Method)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at java.lang.reflect.Method.invoke(Method.java:507)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at dalvik.system.NativeStart.main(Native Method)
11-26 22:52:11.156: E/AndroidRuntime(8322): Caused by: android.view.InflateException: Binary XML file line #11: Error inflating class eu.test.test.TestActivity.Panel
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:581)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:209)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.app.Activity.setContentView(Activity.java:1657)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at eu.test.test.TestActivity.onCreate(TestActivity.java:136)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	... 11 more
11-26 22:52:11.156: E/AndroidRuntime(8322): Caused by: java.lang.ClassNotFoundException: eu.test.test.TestActivity.Panel in loader dalvik.system.PathClassLoader[/data/app/eu.test.test-1.apk]
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.view.LayoutInflater.createView(LayoutInflater.java:471)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
11-26 22:52:11.156: E/AndroidRuntime(8322): 	... 21 more
```

Woran könnte das liegen?

Danke schonmal.

MfG


----------



## Marco13 (26. Nov 2012)

Dein Android sagt dir anscheinend auch gerade


Marco13 hat gesagt.:


> Mit 'Panel' kann ich da gerade nichts anfangen..




Zumindest ist das die "root case": 

```
Caused by: java.lang.ClassNotFoundException: eu.test.test.TestActivity.Panel in loader dalvik.system.PathClassLoader[/data/app/eu.test.test-1.apk]
```
Sicher dass die Klasse und das Package so heißen? (Ansonsten überlasse ich das mal den Android-Experten...)


----------



## bruce85 (26. Nov 2012)

Danke, hab das jetzt einigermaßen lösen können.
Hier mal die XML Datei:
[XML]<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:layout_alignParentBottom="false"
    android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:isScrollContainer="true">

 <RelativeLayout 
    android:id="@+id/layout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

 </RelativeLayout>
</ScrollView>[/XML]

Den Panel füge ich einfach das RelativeLayout über addView hinzu:

```
RelativeLayout layout2 = (RelativeLayout)findViewById(R.id.layout);
layout2.addView(panel);
layout2.addView(adView);
```

Das wird jetzt in ScrollView angezeigt, nur kann ich nicht Scrollen.
Ich habe testweise mal ein Paar Buttons in der ScrollView hinzugefügt und somit klappt das Scrollen.

Nur wenn ich mein Panel dann hinzufüge, kann ich nicht scrollen, ich denke, er erkennt einfach nicht, das der Panel größer ist wie der ScrollView um dann Scrollen zu können.

Gibt es eventuell eine möglichkeit das einzustellen?

MfG


----------



## bruce85 (27. Nov 2012)

Ich hab das Problem mit dem Scrollen jetzt so gelöst:

```
panel.setMinimumHeight(pHeight);
```

und vielen Dank für die Hilfe.

MfG


----------

