gpt4 book ai didi

java - Android:ScrollView 滚动时不会清除背景

转载 作者:行者123 更新时间:2023-12-02 10:58:20 26 4
gpt4 key购买 nike

我有一个非常奇怪的问题,你可以看到下面的图片:

Before scrolling

After scrolling

顶部图片是在滚动之前捕获的,底部图片是在滚动之后捕获的。 Android 不会清除背景来删除起始 View 。如果我接受黑色背景,我可以解决这个问题(可以通过激活注释代码来完成修复android:background="#111100"> 在fragment.xml中),但我不会这样做。

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];}

}

我需要清爽的白色或灰色背景。我已经通过带有模拟器的 Android Studio 和带有设备的 Eclipse 测试了这段代码,两者都存在问题。

我能做什么?

最佳答案

这里的问题是,您正在查看带有透明背景的 ScrollView 后面的 fragment ,有太多代码需要查看,但是如果您不打算调用fragmentManager.add两次,则如果您只读取相同的一个,则必须进行搜索你想要的。

如果您打算使用添加(并且不能使用替换),则必须将 ScrollView 的背景颜色设置为不透明的颜色。

方向更改时, fragment 将被保留,因此您需要将代码更改为 if (savedInstance != null)fragment.add 否则,它将在方向更改时在顶部添加另一个 fragment

关于java - Android:ScrollView 滚动时不会清除背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51545630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com