0
我的問題是,當我點擊我的Checkboxthe ScrollView
消失。複選框使用OnCheckChangedListener
當點擊複選框時,滾動查看消失點
這是我的佈局文件的一部分:
<ScrollView
android:id="@+id/drawingScrollView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:paddingTop="300dp" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp" >
<ImageButton
android:id="@+id/eraseButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rubber" />
<CheckBox
android:id="@+id/unschaerfeFilterCheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Unschärfefilter AN/AUS"
android:textSize="12sp" />
<ImageButton
android:id="@+id/undoButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/undo" />
</FrameLayout>
</ScrollView>
當我檢查,並取消選中該複選框佈局應改變:
unschaerfeFilterCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// ab 6.2. Zeile
CheckBox unschaerfeFilterCheckBox = (CheckBox) findViewById(R.id.unschaerfeFilterCheckBox);
TextView radiusTextView = (TextView) findViewById(R.id.radiusTextView);
TextView radiusTextMin = (TextView) findViewById(R.id.radiusMinTextView);
SeekBar unschaerfeSeekBar = (SeekBar) findViewById(R.id.unschaerfeSeekbar);
RadioButton unschaerfeCheckBox1 = (RadioButton) findViewById(R.id.unschaerfeCheckBox1);
RadioButton unschaerfeCheckBox2 = (RadioButton) findViewById(R.id.unschaerfeCheckBox2);
RadioButton unschaerfeCheckBox3 = (RadioButton) findViewById(R.id.unschaerfeCheckBox3);
RadioButton unschaerfeCheckBox4 = (RadioButton) findViewById(R.id.unschaerfeCheckBox4);
ScrollView drawingScrollView = (ScrollView)findViewById(R.id.drawingScrollView);
View view = (View)findViewById(R.id.vorschauView);
if (isChecked) {
drawingScrollView.invalidate();
drawingScrollView.requestLayout();
view.invalidate();
view.requestLayout();
radiusTextView.setVisibility(View.VISIBLE);
radiusTextMin.setVisibility(View.VISIBLE);
unschaerfeSeekBar.setVisibility(View.VISIBLE);
unschaerfeCheckBox1.setVisibility(View.VISIBLE);
unschaerfeCheckBox2.setVisibility(View.VISIBLE);
unschaerfeCheckBox3.setVisibility(View.VISIBLE);
unschaerfeCheckBox4.setVisibility(View.VISIBLE);
unschaerfeWertIsSet = true;
unschaerfeLayoutIsSet = true;
short abstandDurchsichtigkeitsTextOben = (short)(abstandStrichDickeTextOben + strichdickeTextHeight + konstanterAbstand);
short height = (short)(drawingScrollView.getPaddingTop());
short abstandUnschaerfeCheckBoxOben = (short)(abstandDurchsichtigkeitsTextOben + durchsichtigkeitsTextHeight + konstanterAbstand /*+ height*/);
Log.d("abstandUnschaerfeCheckBoxOben", "abstandUnschaerfeCheckBoxOben " + abstandDurchsichtigkeitsTextOben + "|" + abstandUnschaerfeCheckBoxOben + "|" + height); // 64 bei Galaxy s2
unschaerfeCheckBoxLayout.setMargins(0, abstandUnschaerfeCheckBoxOben, 0, 0);
unschaerfeFilterCheckBox.setLayoutParams(unschaerfeCheckBoxLayout);
short abstandRadiusTextLinks = (short)(unschaerfeCheckBoxWidth + konstanterAbstand);
short abstandRadiusTextOben = (short)(abstandUnschaerfeCheckBoxOben + konstanterAbstand/2);
radiusTextViewLayout.setMargins(abstandRadiusTextLinks, abstandRadiusTextOben, 0, 0);
radiusTextView.setLayoutParams(radiusTextViewLayout);
short abstandRadiusMinTextLinks = (short)(abstandRadiusTextLinks + radiusTextViewWidth + konstanterAbstand);
radiusMinTextViewLayout.setMargins(abstandRadiusMinTextLinks, abstandRadiusTextOben, 0, 0);
radiusTextMin.setLayoutParams(radiusMinTextViewLayout);
...
即使我取消選中複選框,ScrollView
仍然會消失。在Emulator(API 16)中一切都很好用。接下來的事情是,我的手機上的位置不正確(API 19),但在Emulator中位置正確。
爲了說明這裏有幾個圖片:
(1):按壓複選框(移動電話)之前
(2):按壓複選框(移動電話)後 - >無ScrollView
了,錯誤的位置
(3):按複選框(模擬器)之後 - >一切都好
讓我知道,當你需要更多的java/xml