Android: machen Sie einen scrollbaren benutzerdefinierte Ansicht
Hab ich rollte meine eigenen Ansicht und kann zeichnen auf dem Bildschirm in Ordnung, aber was würde ich wirklich tun möchte, ist das measuredHeigh auf dem Bildschirm, sagen wir mal 1000px und dem Benutzer das navigieren auf der Y-Achse, aber ich habe Probleme dies zu tun. Kann jemand helfen?
Hier einige code:
public class TestScreen extends Activity {
CustomDrawableView mCustomDrawableView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCustomDrawableView = new CustomDrawableView(this);
setContentView(mCustomDrawableView);
}
}
und
public class CustomDrawableView extends View {
public CustomDrawableView(Context context) {
super(context);
setVerticalScrollBarEnabled(true);
setMinimumHeight(1000);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawLine(...);
//more drawing
}
}
Ich habe versucht, zu überschreiben, scrollTo, scrollBy, awakenScrollBars etc mit einem Aufruf von super, aber ohne Erfolg. Bin ich etwas dumm, oder bin ich da machen einige grundlegende Fehler?
Vielen Dank im Voraus,
Martyn
Zusatz:
Ich habe versucht, fügen Sie diese als benutzerdefinierte Komponente mit dem unter layout-Datei und änderte den code in TestScreen
auf die richtige Ressource mit setContentView(R.layout.exampleLayout)
, aber dies bewirkt, dass der emulator zum Absturz zu bringen. Ich habe versucht, Kommentare im code nach unten auf das absolute minimum und es immer noch abstürzt, so dass es etwas grundlegend falsch, dass ich das Tue, aber ich bin mir nicht sicher, was es ist :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent">
<com.martyn.testApp.CustomDrawableView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</ScrollView>
</LinearLayout>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach Ihre anzeigen in einem ScrollView!
Beachten Sie, dass die ScrollWiew sollte der root-Knoten
(hier ist dein LinearLayout)
Wenn Sie wollen, die gesamte Tätigkeit ein ScrollView, dann tun Sie etwas wie dieses:
Dann die Aktivität, die verwendet das layout kann z.B. so Aussehen:
Dies setzt Voraus, dass der name der xml-Datei ist scroll_layout.xml.
Wenn Sie wollen, um das scrollen auf Ihre eigenen, können Sie ein
Scroller
und einVelocityTracker
, während das überschreiben deronTouchEvent
- Methode der benutzerdefinierten Ansicht. Um Ihnen helfen, es umzusetzen ich empfehlen, sich durch die Javadocs von diesen Klassen und einen Blick auf android-widgets-Implementierungen, die das scrollen wie die NumberPicker.