Panel mit Scrollbar?

bruce85

Bekanntes Mitglied
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
 

bruce85

Bekanntes Mitglied
Das hatte ich auch schon versucht:
Java:
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
 

bruce85

Bekanntes Mitglied
Nein, da ich AdMob benutze, füge ich diese hier hinzu:
Java:
layout2.addView(scrollView);

Java:
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
Java:
layout2.addView(scrollView);
das hier eintrage:
Java:
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

Gesperrter Benutzer
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

Bekanntes Mitglied
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

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

Java:
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:
Java:
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:
Java:
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
 
Zuletzt bearbeitet:

schlingel

Gesperrter Benutzer
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

Bekanntes Mitglied
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
 

Anhänge

  • screen.png
    screen.png
    19,8 KB · Aufrufe: 20
Zuletzt bearbeitet:

bruce85

Bekanntes Mitglied
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:
Java:
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

Top Contributor
Dein Android sagt dir anscheinend auch gerade
Mit 'Panel' kann ich da gerade nichts anfangen..
:D

Zumindest ist das die "root case":
Code:
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

Bekanntes Mitglied
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:
Java:
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

Bekanntes Mitglied
Ich hab das Problem mit dem Scrollen jetzt so gelöst:
Java:
panel.setMinimumHeight(pHeight);

und vielen Dank für die Hilfe.

MfG
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Panel/View für Android Android & Cross-Platform Mobile Apps 3

Ähnliche Java Themen

Neue Themen


Oben