Android: ScrollView does't clean background when scrolling

Multi tool use

Clash Royale CLAN TAG#URR8PPPAndroid: ScrollView does't clean background when scrolling
I have very strange problem as you can see pictures below:


Top picture is captured before scrolling and bottom after scrolling. Android doesn't clear the background to erase the starting view. I can fix this if I accept black background (fix can be done by activating the commented code
android:background="#111100"> in fragment.xml), but I won't do it.
fragment_paavalikko.xml:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:scrollbars="vertical"
android:id="@+id/vScroll">
<!-- android:background="#111100"> -->
<HorizontalScrollView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:scrollbars="horizontal"
android:id="@+id/hScroll">
<!-- android:background="#111100"> -->
<LinearLayout
android:id="@+id/paavalikkoSisalto"
android:layout_width="match_parent"
android:layout_height="469dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:orientation="horizontal" >
</LinearLayout>
</HorizontalScrollView>
</ScrollView>
activity_aktiviteetti1.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.mannonen.tasavalta.Aktiviteetti1" >
<FrameLayout
android:id="@+id/aktiviteetti1Sisalto"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</RelativeLayout>
Activity1.java:
package com.mannonen.tasavalta;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.*;
public class Aktiviteetti1 extends FragmentActivity {
// Used to load the 'native-lib' library on application startup.
static {
System.loadLibrary("native-lib");
}
PaaValikko fragmentti1;
//aktiviteetin konstruktori
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_aktiviteetti1);
//päävalikko on fragmentissa, joka pitää lisätä aktiviteettiin heti
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentti1 = new PaaValikko();
fragmentTransaction.add(R.id.aktiviteetti1Sisalto, fragmentti1);
fragmentTransaction.commit();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_aktiviteetti1, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A native method that is implemented by the 'native-lib' native library,
* which is packaged with this application.
*/
public native String stringFromJNI();
}
PaaValikko.java
package com.mannonen.tasavalta;
import android.support.v4.app.*;
import java.io.*;
import android.os.Bundle;
import android.view.*;
import android.widget.*;
public class PaaValikko extends Fragment {
private ScrollView vScroll;
private HorizontalScrollView hScroll;
private Muisti mMuisti;
private LinearLayout mPalstat;
private LinearLayout mJuuri;
private TextView mBookmarks;
private ToggleButton mLanguage;
private ToggleButton mGraphics;
private Button mCreateBookmark;
private Button mHelp;
private Button mAbout;
private Button mBookmark1;
private Button mBookmark2;
private Button mBookmark3;
private Button mBookmark4;
private Button mBookmark5;
private Button mBookmark6;
private Button mBookmark7;
private Button mBookmark8;
private Button mBookmark9;
private Button mTiedostot;
private TextView m3D1;
private TextView m3D2;
private TextView m3D3;
private TextView m3D4;
private TextView m3D5;
private TextView mStories1;
private TextView mStories2;
private TextView mStories3;
private TextView mStories4;
private TextView mStories5;
private String mTiedostoNimet;
private int mNimiLaskuri=0;
private float mx, my;
private View mView;
//Tämä luokka käsittelee päävalikon vakionappien sekä
//mahdollisten kirjanmerkkien onClick tapahtumat
class VakioNappi implements View.OnClickListener {
@Override
public void onClick(View v) {
int tag=(Integer) v.getTag();
switch (tag)
{
case 2001:
v.setBackgroundColor(0xffff0000);
break;
case 2002:
v.setBackgroundColor(0xffff0000);
break;
case 2003:
v.setBackgroundColor(0xffff0000);
break;
case 2004:
v.setBackgroundColor(0xffff0000);
break;
case 2005:
v.setBackgroundColor(0xffff0000);
break;
case 2006:
v.setBackgroundColor(0xffff0000);
break;
case 2007:
v.setBackgroundColor(0xffff0000);
break;
case 2008:
v.setBackgroundColor(0xffff0000);
break;
case 2009:
v.setBackgroundColor(0xffff0000);
break;
case 2010:
v.setBackgroundColor(0xffff0000);
break;
case 2011:
v.setBackgroundColor(0xffff0000);
break;
case 2012:
v.setBackgroundColor(0xffff0000);
break;
case 2013:
v.setBackgroundColor(0xffff0000);
break;
case 2014:
v.setBackgroundColor(0xffff0000);
break;
}
}
}
//Tämä luokka käsittelee päävalikon CAD -nappuloiden onClick tapahtumat
class CADNappi implements View.OnClickListener {
@Override
public void onClick(View v) {
int tag=(Integer) v.getTag();
String tiedostoNimi=mTiedostoNimet[tag];
v.setBackgroundColor(0xff0000ff);
}
}
//Tämä luokka käsittelee päävalikon teksti -nappuloiden onClick tapahtumat
class TekstiNappi implements View.OnClickListener {
@Override
public void onClick(View v) {
int tag=(Integer) v.getTag();
String tiedostoNimi=mTiedostoNimet[tag];
v.setBackgroundColor(0xffff00ff);
}
}
//Tätä metodia kutsutaan, kun fragmentti luodaan, joko dynaamisesti
//tai xml-tiedostosta
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
//Aktivoidaan tiedot kovalevyltä, jos jotain on olemassa
ObjectInputStream sisaan=null;
try {
sisaan=new ObjectInputStream(
new FileInputStream("Muisti.txt"));
try {
mMuisti=(Muisti)sisaan.readObject();
sisaan.close();
} catch ( OptionalDataException e) {
mMuisti=new Muisti();
} catch (ClassNotFoundException e) {
mMuisti=new Muisti();
} catch (IOException e) {
mMuisti=new Muisti();
}
} catch (FileNotFoundException e) {
mMuisti=new Muisti();
} catch (StreamCorruptedException e) {
mMuisti=new Muisti();
} catch (IOException e) {
mMuisti=new Muisti();
}
// xml tiedostosta luettavat jutut muodostavat View-luokan ilmentymän
return inflater.inflate(R.layout.fragment_paavalikko, parent, false);
}
//Tätä kutsutaan pian onCreateView metodin jälkeen. Kaikkien asetusten
//määrittäminen laitetaan tänne
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
//Otetaan käyttöön xml-tiedostossa annettuja juttuja
mJuuri=(LinearLayout) view.findViewById(R.id.paavalikkoSisalto);
//Sitten horisontaaliseen juureen lisätään tarvittavat palstat
mPalstat=new LinearLayout[mMuisti.annaPalstat()+1];
for (int i=0; i<mMuisti.annaPalstat()+1; i++) {
mPalstat[i]=new LinearLayout(view.getContext());
mPalstat[i].setOrientation(LinearLayout.VERTICAL);
mJuuri.addView(mPalstat[i]);
}
//Palstoihin lisätään vakiosisältö, eli otsikot ja painonapit.
//Aloitetaan vasemmasta palstasta ja vakiosisältö ensin
mBookmarks=new TextView(view.getContext());
mBookmarks.setText("Bookmarks");
mBookmarks.setTextSize(25);
mPalstat[0].addView(mBookmarks);
mLanguage=new ToggleButton(view.getContext());
mLanguage.setTextOff("Finnish");
mLanguage.setTextOn("English");
mLanguage.setChecked(true);
mLanguage.setTag(2001);
mLanguage.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mLanguage);
mGraphics=new ToggleButton(view.getContext());
mGraphics.setTextOff("Use simple graphics");
mGraphics.setTextOn("Use elaborate graphics");
mGraphics.setChecked(true);
mGraphics.setTag(2002);
mGraphics.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mGraphics);
mCreateBookmark=new Button(view.getContext());
mCreateBookmark.setText("Create bookmark");
mCreateBookmark.setTag(2003);
mCreateBookmark.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mCreateBookmark);
mHelp=new Button(view.getContext());
mHelp.setText("Help");
mHelp.setTag(2004);
mHelp.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mHelp);
mAbout=new Button(view.getContext());
mAbout.setText("About");
mAbout.setTag(2005);
mAbout.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mAbout);
//Sitten lisätään sisältöä muisti-luokan mukaisesti. Kirjanmerkit:
if (mMuisti.onkoKirjanMerkkia(0)) {
mBookmark1=new Button(view.getContext());
mBookmark1.setText("Bookmark 1");
mBookmark1.setTag(2006);
mBookmark1.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mBookmark1);
}
if (mMuisti.onkoKirjanMerkkia(1)) {
mBookmark2=new Button(view.getContext());
mBookmark2.setText("Bookmark 2");
mBookmark2.setTag(2007);
mBookmark2.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mBookmark2);
}
if (mMuisti.onkoKirjanMerkkia(2)) {
mBookmark3=new Button(view.getContext());
mBookmark3.setText("Bookmark 3");
mBookmark3.setTag(2008);
mBookmark3.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mBookmark3);
}
if (mMuisti.onkoKirjanMerkkia(3)) {
mBookmark4=new Button(view.getContext());
mBookmark4.setText("Bookmark 4");
mBookmark4.setTag(2009);
mBookmark4.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mBookmark4);
}
if (mMuisti.onkoKirjanMerkkia(4)) {
mBookmark5=new Button(view.getContext());
mBookmark5.setText("Bookmark 5");
mBookmark5.setTag(2010);
mBookmark5.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mBookmark5);
}
if (mMuisti.onkoKirjanMerkkia(5)) {
mBookmark6=new Button(view.getContext());
mBookmark6.setText("Bookmark 6");
mBookmark6.setTag(2011);
mBookmark6.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mBookmark6);
}
if (mMuisti.onkoKirjanMerkkia(6)) {
mBookmark7=new Button(view.getContext());
mBookmark7.setText("Bookmark 7");
mBookmark7.setTag(2012);
mBookmark7.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mBookmark7);
}
if (mMuisti.onkoKirjanMerkkia(7)) {
mBookmark8=new Button(view.getContext());
mBookmark8.setText("Bookmark 8");
mBookmark8.setTag(2013);
mBookmark8.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mBookmark8);
}
if (mMuisti.onkoKirjanMerkkia(8)) {
mBookmark9=new Button(view.getContext());
mBookmark9.setText("Bookmark 9");
mBookmark9.setTag(2014);
mBookmark9.setOnClickListener(new VakioNappi());
mPalstat[0].addView(mBookmark9);
}
//alustetaan mTiedostoNimet, joita voi olla enintään 2000 riippumatta siitä,
//ovatko teksti- vai CAD-tiedostoja
mTiedostoNimet=new String[2000];
//Siirrytään seuraaviin palstoihin vasemmalta oikealle. 3D-palstoja
//on enintään 5
boolean luotu=false;
int index1=0, index2=0;
mTiedostot=new Button[mMuisti.annaTiedostojenMaara()];
for (int i=0; i<mMuisti.annaTiedostojenMaara(); i++) {
if (mMuisti.annaValikkoSijainti(i)==1 && mMuisti.annaOnko3D(i)) {
//jos palstaan ei ole vielä lisätty, lisätään otsikko
if (luotu!=true) {
index1++;
m3D1=new TextView(view.getContext());
m3D1.setText("3D 1");
m3D1.setTextSize(25);
mPalstat[index1].addView(m3D1);
luotu=true;
}
//luodaan sitten varsinainen valikkokohta
mTiedostot[index2]=new Button(view.getContext());
mTiedostot[index2].setText(mMuisti.annaTiedostonNimi(i));
mTiedostot[index2].setEnabled(mMuisti.annaOnkoAsetettu(i));
mTiedostot[index2].setTag(mNimiLaskuri);
mNimiLaskuri++;
mTiedostot[index2].setOnClickListener(new CADNappi());
if (mMuisti.annaOnkoNakyva(i)) {
mTiedostot[index2].setVisibility(View.VISIBLE);
} else {
mTiedostot[index2].setVisibility(View.INVISIBLE);
}
mPalstat[index1].addView(mTiedostot[index2]);
index2++;
}
}
luotu=false;
for (int i=0; i<mMuisti.annaTiedostojenMaara(); i++) {
if (mMuisti.annaValikkoSijainti(i)==2 && mMuisti.annaOnko3D(i)) {
//jos palstaan ei ole vielä lisätty, lisätään otsikko
if (luotu!=true) {
index1++;
m3D2=new TextView(view.getContext());
m3D2.setText("3D 2");
m3D2.setTextSize(25);
mPalstat[index1].addView(m3D2);
luotu=true;
}
//luodaan sitten varsinainen valikkokohta
mTiedostot[index2]=new Button(view.getContext());
mTiedostot[index2].setText(mMuisti.annaTiedostonNimi(i));
mTiedostot[index2].setEnabled(mMuisti.annaOnkoAsetettu(i));
mTiedostot[index2].setTag(mNimiLaskuri);
mTiedostoNimet[mNimiLaskuri]=mMuisti.annaTiedostonNimi(i);
mNimiLaskuri++;
mTiedostot[index2].setOnClickListener(new CADNappi());
if (mMuisti.annaOnkoNakyva(i)) {
mTiedostot[index2].setVisibility(View.VISIBLE);
} else {
mTiedostot[index2].setVisibility(View.INVISIBLE);
}
mPalstat[index1].addView(mTiedostot[index2]);
index2++;
}
}
luotu=false;
for (int i=0; i<mMuisti.annaTiedostojenMaara(); i++) {
if (mMuisti.annaValikkoSijainti(i)==3 && mMuisti.annaOnko3D(i)) {
//jos palstaan ei ole vielä lisätty, lisätään otsikko
if (luotu!=true) {
index1++;
m3D3=new TextView(view.getContext());
m3D3.setText("3D 3");
m3D3.setTextSize(25);
mPalstat[index1].addView(m3D3);
luotu=true;
}
//luodaan sitten varsinainen valikkokohta
mTiedostot[index2]=new Button(view.getContext());
mTiedostot[index2].setText(mMuisti.annaTiedostonNimi(i));
mTiedostot[index2].setEnabled(mMuisti.annaOnkoAsetettu(i));
mTiedostot[index2].setTag(mNimiLaskuri);
mTiedostoNimet[mNimiLaskuri]=mMuisti.annaTiedostonNimi(i);
mNimiLaskuri++;
mTiedostot[index2].setOnClickListener(new CADNappi());
if (mMuisti.annaOnkoNakyva(i)) {
mTiedostot[index2].setVisibility(View.VISIBLE);
} else {
mTiedostot[index2].setVisibility(View.INVISIBLE);
}
mPalstat[index1].addView(mTiedostot[index2]);
index2++;
}
}
luotu=false;
for (int i=0; i<mMuisti.annaTiedostojenMaara(); i++) {
if (mMuisti.annaValikkoSijainti(i)==4 && mMuisti.annaOnko3D(i)) {
//jos palstaan ei ole vielä lisätty, lisätään otsikko
if (luotu!=true) {
index1++;
m3D4=new TextView(view.getContext());
m3D4.setText("3D 4");
m3D4.setTextSize(25);
mPalstat[index1].addView(m3D4);
luotu=true;
}
//luodaan sitten varsinainen valikkokohta
mTiedostot[index2]=new Button(view.getContext());
mTiedostot[index2].setText(mMuisti.annaTiedostonNimi(i));
mTiedostot[index2].setEnabled(mMuisti.annaOnkoAsetettu(i));
mTiedostot[index2].setTag(mNimiLaskuri);
mTiedostoNimet[mNimiLaskuri]=mMuisti.annaTiedostonNimi(i);
mNimiLaskuri++;
mTiedostot[index2].setOnClickListener(new CADNappi());
if (mMuisti.annaOnkoNakyva(i)) {
mTiedostot[index2].setVisibility(View.VISIBLE);
} else {
mTiedostot[index2].setVisibility(View.INVISIBLE);
}
mPalstat[index1].addView(mTiedostot[index2]);
index2++;
}
}
luotu=false;
for (int i=0; i<mMuisti.annaTiedostojenMaara(); i++) {
if (mMuisti.annaValikkoSijainti(i)==5 && mMuisti.annaOnko3D(i)) {
//jos palstaan ei ole vielä lisätty, lisätään otsikko
if (luotu!=true) {
index1++;
m3D5=new TextView(view.getContext());
m3D5.setText("3D 5");
m3D5.setTextSize(25);
mPalstat[index1].addView(m3D5);
luotu=true;
}
//luodaan sitten varsinainen valikkokohta
mTiedostot[index2]=new Button(view.getContext());
mTiedostot[index2].setText(mMuisti.annaTiedostonNimi(i));
mTiedostot[index2].setEnabled(mMuisti.annaOnkoAsetettu(i));
mTiedostot[index2].setTag(mNimiLaskuri);
mTiedostoNimet[mNimiLaskuri]=mMuisti.annaTiedostonNimi(i);
mNimiLaskuri++;
mTiedostot[index2].setOnClickListener(new CADNappi());
if (mMuisti.annaOnkoNakyva(i)) {
mTiedostot[index2].setVisibility(View.VISIBLE);
} else {
mTiedostot[index2].setVisibility(View.INVISIBLE);
}
mPalstat[index1].addView(mTiedostot[index2]);
index2++;
}
}
luotu=false;
/*
A part of code removed to save space
*/
}
}
Muisti.java:
package com.mannonen.tasavalta;
import java.io.Serializable;
public class Muisti implements Serializable {
//Alla olevat ovat kirjanmerkkejä varten
private double kirjanMerkkiOrientaatioD;
private String kirjanMerkkiTiedostoD;
private double kirjanMerkkiOrientaatioT;
private String kirjanMerkkiTiedostoT;
private boolean kirjanMerkkiOnkoAsetettu= {false, false, false, false,
false, false, false, false, false};
//Alla olevat ovat valikkomäärittelyitä varten
private String tiedostoTietoNimi= {"Sampo", "Frame_of_Sampo", "Cell",
"Liike", "Liike2", "Liike3", "Liikesampo", "Pilvi1", "Pilvi2",
"Universe", "Logic", "Cosmology", "Mathematics", "Relativity",
"Reality", "Reality2", "Viides", "Test", "Fft", "FloatTaulukko",
"Listat"};
private int tiedostoTietoValikkoSijainti= {1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 3, 2, 2, 3, 3, 5, 5, 5, 5, 5};
private boolean tiedostoTietoOnkoNakyva={true, true, true, true, true,
true, true, true, true, true, true, true, true, false, true,
true, false, true, true, true, true};
private boolean tiedostoTietoOnkoAsetettu= {true, true, true, true,
true, true, true, true, true, true, true, false, true, true,
true, true, true, true, true, true, true};
private boolean tiedostoTietoOnko3D= {true, true, true, true, true,
true, true, true, true, false, false, false, false, false,
false, false, false, false, false, false, false};
private int tiedostoTietoTiedostoTietoja=21;
//Alla oleva ilmoittaa palstojen kokonaismäärän ilman Bookmarks-palstaa
private int palstoja=5;
public Muisti() {}
public int annaPalstat() {return palstoja;}
public boolean onkoKirjanMerkkia(int num) {return kirjanMerkkiOnkoAsetettu[num];}
public int annaTiedostojenMaara() {return tiedostoTietoTiedostoTietoja;}
public int annaValikkoSijainti(int num) {return tiedostoTietoValikkoSijainti[num];}
public boolean annaOnko3D(int num) {return tiedostoTietoOnko3D[num];}
public String annaTiedostonNimi(int num) {return tiedostoTietoNimi[num];}
public boolean annaOnkoAsetettu(int num) {return tiedostoTietoOnkoAsetettu[num];}
public boolean annaOnkoNakyva(int num) {return tiedostoTietoOnkoNakyva[num];}
}
I need refreshing white or grey background. I have tested this code by Android Studio with an emulator and Eclipse with a device, and the problem exists on both.
What can I do?
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
