0

好的,所以我有一个自定义窗口弹出并显示一个 xml 文件,在那个窗口上我希望将搜索栏放在那里,现在我有一个奇怪的问题,当我加载弹出窗口时,搜索栏是显示正确,但是当我触摸它们时,它们突然重新绘制到一个新位置(特别是它们在左下角以 90 度角重新绘制),如果我更改设备的方向,那么之后一切正常,它是很奇怪,我在下面发布代码,希望有人能对发生的事情有所了解^_^

从清单:

    <activity
        android:name="com.example.exampleProj.sliderPopupWindow"
        android:label="@string/app_name"
        android:theme="@style/myDialog"
        >
        <intent-filter>
            <action android:name="com.example.exampleProj.sliderPopup" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

这是我要显示的 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">
<View android:id="@+id/fakeView"
   android:layout_width="0dp"
   android:layout_height="0dp" 
   android:layout_centerInParent="true"/>

<SeekBar
    android:id="@+id/SeekBar1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignRight="@id/fakeView" />

<SeekBar
    android:id="@+id/SeekBar2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignRight="@+id/SeekBar1"
    android:layout_below="@+id/SeekBar1" />

<SeekBar
    android:id="@+id/SeekBar3"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignRight="@+id/SeekBar2"
    android:layout_below="@+id/SeekBar2" />

</RelativeLayout>

这是我正在使用的java文件:

import android.app.Activity;
import android.os.Bundle;
import android.view.WindowManager;
import android.widget.SeekBar;

public class sliderPopupWindow extends Activity {

SeekBar bar1;
SeekBar bar2;
SeekBar bar3;
WindowManager.LayoutParams params;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    bar1 = (SeekBar) findViewById(R.id.SeekBar1);
    bar2 = (SeekBar) findViewById(R.id.SeekBar2);
    bar3 = (SeekBar) findViewById(R.id.SeekBar3);
    setContentView(R.layout.sliderwindow);
    params = getWindow().getAttributes();
    params.height = 700;
    params.width = 700;
    getWindow().setAttributes(params);
}

}

还没有多少,相当裸露,但这是一个奇怪的问题,我希望有人能给我一些关于正在发生的事情的见解^_^

这里有一些截图来演示这个问题。第一张展示了第一次触摸其中一个条时会发生什么,第二张展示了我旋转设备后会发生什么。旋转后,它看起来/工作正常(如果我将其旋转回来,则相同)但最初的触摸似乎垂直重绘了搜索栏

问题的证明 旋转装置后

4

1 回答 1

0

似乎我找到了一个可行的解决方案。如果我将 params.width 和/或 params.height 更改为 params.width != params.height,这个问题似乎就消失了。因此,一旦我将 params.height 更改为 701,问题就消失了。

于 2013-10-13T23:18:48.533 回答