android seekbar在启动时移动绘制位置

时间:2013-10-13 21:20:06

标签: android dialog popup seekbar

好吧,所以我有一个自定义窗口弹出并显示一个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);
}

}

还没有那么多,相当裸露,但这是一个如此奇怪的问题,我希望有人可以给我一些关于发生了什么的见解^ _ ^

以下是一些演示此问题的屏幕截图。 第一个演示了首次触摸其中一个条时发生的情况,第二个演示了旋转设备后发生的情况。旋转后,它看起来/工作正常(如果我将其旋转回来),但初始触摸似乎垂直重绘了搜索栏

demonstration of the problem after rotating device

1 个答案:

答案 0 :(得分:0)

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