Hi die SCreenshots sind das bilder deiner APP, oder ist das der Kalender von Android?
Das sind Bilder meiner programmierten App.
Hi die SCreenshots sind das bilder deiner APP, oder ist das der Kalender von Android?
Das sind Bilder meiner programmierten App.
Hallo,
wie man in den Screenshots sieht, ist der erste Screenshot korrekt.
Dann füge ich einen neuen Termin ein (zweiter Screenshot).
Mit diesem Code wird der Viewpager benachrichtigt, dass er sich aktualisieren soll.
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case 1:
System.out.println("Date added");
doubleViewPager.getVerticalViewPager().getAdapter().notifyDataSetChanged();
break;
}
}
Alles anzeigen
Es kommt aber nur Schrott raus (Screenshot 3). Die Termine sollen alle um 16 Uhr da sein, sind es aber nicht.
Ich tippe darauf, dass die LinearLayouts, die die Uhrzeiten anzeigen, am Anfang nicht der Größe des Bildschirms entsprechen und es somit falsche Werte liefert.
Aber wie kann ich dieses Problem umgehen?
Hallo,
ich hab ein Linearlayout, dessen Position ich benötige. Diese rufe ich mit:
in einem Fragment auf.
Wenn ich die App starte, ist die Position in Ordnung. Sie zeigt 573 an.
Nun rufe ich ein Intent auf:
final FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, NewDate.class);
startActivityForResult(i, 1);
}
});
Kehre ich vom Intent zurück, liefert linearlayouts.get(i).getTop() einen falschen Wert, nämlich 264.
Warum ist das so?
Es scheint, als ob die obere Toolbar nicht mehr dazugerechnet wird...
Hallo,
ich möchte einen Termin in einen Kalendar eintragen. Dazu habe ich folgenden Code:
public void addEvent(String title, long calendarid, int color, Calendar timefrom, Calendar timeto, boolean wholeday, String timezone, String rrule, ArrayList<Reminder> reminders, String location, String description) {
ContentResolver cr = this.c.getContentResolver();
ContentValues values = new ContentValues();
System.out.println("Adding " + title + ", CalendarID: " + calendarid + ", " + color + ", " + timefrom.getTimeInMillis() + ", " + timeto.getTimeInMillis() + ", "
+ (timeto.getTimeInMillis() - timefrom.getTimeInMillis()) + ", " + timezone + ", " + rrule + ", " + location + ", " + description);
values.put(CalendarContract.Events.TITLE, title);
values.put(CalendarContract.Events.CALENDAR_ID, calendarid);
values.put(CalendarContract.Events.EVENT_COLOR_KEY, 0xff000000 - color);
values.put(CalendarContract.Events.DTSTART, timefrom.getTimeInMillis());
values.put(CalendarContract.Events.DTEND, timeto.getTimeInMillis());
if(wholeday == true) {
values.put(CalendarContract.Events.ALL_DAY, 1);
}
else {
values.put(CalendarContract.Events.ALL_DAY, 0);
}
values.put(CalendarContract.Events.EVENT_TIMEZONE, timezone);
System.out.println("MEINERRULE: " + rrule);
values.put(CalendarContract.Events.RRULE, rrule);
values.put(CalendarContract.Events.EVENT_LOCATION, location);
values.put(CalendarContract.Events.DESCRIPTION, description);
if(reminders.size() > 0) {
values.put(CalendarContract.Events.HAS_ALARM, 1);
}
else {
values.put(CalendarContract.Events.HAS_ALARM, 0);
}
Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
Alles anzeigen
Der Termin wird eingetragen, aber:
Die eingetragene Farbe stimmt nicht. Es wird immer die Farbe vom Default-Kalender (nämlich -6306073) eingetragen. Was mache ich falsch?
Hallo,
ich habe einen viewpager, der ein Fragment hat.
Dort werden dynamisch TextViews in ein LinearLayout eingefügt.
Wie kriege ich nun die vertikale Position eines TextViews?
´
TextView txtview = new TextView(this);
txtview.setText("Test");
Wenn ich txtview.getTop() mache, liefert es leider 0.
Warum ist das so?
Naja, bleibt mir nichts anderes übrig, als das ScrollView zu entfernen und das Layout dann mit dem ViewPager zu scrollen.
Edit:
Hmm. Kann das doch nicht machen. Wenn ich mit ViewPager scrolle, dann schneidet er irgendwann den Inhalt ab.
Hat noch jemand Ideen, wie ich die App im Landscape Modus zum scrollen bringen kann?
Es ist auf jedem Gerät gleich (ich habs auf 3 Geräten getestet).
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView android:id="@+id/scrollview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:fillViewport="true" >
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/linearlayout_timeline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</RelativeLayout>
</android.support.v4.widget.NestedScrollView>
Alles anzeigen
Hmmmm...
Das hat leider keine Änderung gebracht.
Ich kann es mir nicht erklären.
Liegt es am DoubleViewPager? Dieser ändert den Inhalt vertikal und horizontal. Aber dann müsste das Scrollen auch im Portrait Modus nicht funktionieren, tut es aber!
Wie ich das verstanden habe, ist dein Problem mit diesem hier (fast) identisch.
Hmmm... Mein Code ist bereits so wie in der Antwort im Link.
@jogimuc:
Wenn ich die Zeile android:orientation="vertical" wegmache, dann sind sämtliche Elemente horizontal, was aber nicht sein soll.
Wenn ich android:orientation="vertical" im LinearLayout weglasse und ins ScrollView setze, dann erhalte ich eine Fehlermeldung im Android Studio.
Wenn ich android:orientation="vertical" im LinearLayout und im ScrollView setze, dann gibt es wieder den gleichen Fehler, dass es im Portrait scrollt, aber im Landscape Modus nicht.
Hmm.
Hallo,
ich habe folgenden Code:
content_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="de.ubik.kalender.MainActivity"
tools:showIn="@layout/activity_main"
android:orientation="vertical">
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill"
app:tabBackground="@color/tabBackground"
app:tabIndicatorColor="#000000"
/>
<fr.chaltiel.doublefragmentviewpager.pager.DoubleViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="net.voidynullness.android.tabitytabs.TabLayoutActivity"
android:background="#FFFFFF">
</fr.chaltiel.doublefragmentviewpager.pager.DoubleViewPager>
</LinearLayout>
Alles anzeigen
Ich benutze den DoubleFragmentViewPager von dieser Seite: https://github.com/DanChaltiel/DoubleFragmentViewpager
Läuft auch alles gut, bis auf eins. Wenn ich das folgende Fragment habe:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView android:id="@+id/scrollview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:fillViewport="true" >
<LinearLayout
android:id="@+id/linearlayout_timeline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
Alles anzeigen
Hier fülle ich das LinearLayout dynamisch mit Inhalt.
Ich habe das Problem, dass ich nur scrollen kann, wenn ich im Portraitmodus bin. Wenn ich meinen Bildschirm drehe und im Landschaftsmodus bin, funktioniert das Scrollen nicht.Hat jemand eine Idee, warum?
Hallo,
ich habe einen ViewPager:
viewPager = (ViewPager) findViewById(R.id.pager);
PagerAdapter adapter = new PagerAdapter
(getSupportFragmentManager(), tabLayout.getTabCount(), viewPager, c);
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
Alles anzeigen
Und der PagerAdapter dazu:
package de.ubik.kalender;
/**
* Created by ubik on 31.05.17.
*/
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import java.util.Calendar;
public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
ViewPager v;
Calendar c;
DayFragment tab1;
WeekFragment tab2;
MonthFragment tab3;
YearFragment tab4;
TasksFragment tab5;
public PagerAdapter(FragmentManager fm, int NumOfTabs, ViewPager v, Calendar c) {
super(fm);
this.mNumOfTabs = NumOfTabs;
this.c = c;
this.v = v;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
this.tab1 = new DayFragment(v, this, this.c);
return tab1;
case 1:
this.tab2 = new WeekFragment();
return tab2;
case 2:
this.tab3 = new MonthFragment();
return tab3;
case 3:
this.tab4 = new YearFragment();
return tab4;
case 4:
this.tab5 = new TasksFragment();
return tab5;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
Alles anzeigen
Nun scrollt der ViewPager horizontal.
Ich möchte aber, dass der ViewPager auch vertikal scrollt und
new DayFragment(v, this, this.c, ANZAHLVERTIKALGESCROLLT);
aufruft, wobei ANZAHLVERTIKALGESCROLLT die Anzahl angibt, auf welcher Seite man sich befindet.
Wie kann ich das anstellen?
Danke!