2012-10-17 124 views
1

我在使用LinearLayout时遇到了问题。线性布局是垂直的。在布局中有几个项目,包括一个TextView,一个垂直的SeekBar和一个ImageView。Android:LinearLayout更新视图时重新排列

每当我更新textView(即setText())我的布局重新排列。 ImageView从底部到中间。同样的事情发生,如果我替换ImageView中的drawable。

我想我指定我的布局的方式有问题。这是有部分问题:

 <modrobotics.code.ui.BlockValueSliderView 
      android:id="@+id/sliderSix" 
      android:layout_width="0dp" 
      android:visibility="gone" 
      android:layout_height="fill_parent" 
      android:layout_marginBottom="-12dp" 
      android:layout_weight="1" 
      android:orientation="vertical" > 

      <TextView 
       android:id="@+id/BVLabel" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:gravity="center_horizontal" 
       android:paddingTop="12dp" 
       android:text="64" 
       android:textColor="#000" 
       android:textSize="20sp" > 
      </TextView> 

      <View 
       android:id="@+id/circle1" 
       android:layout_width="6dp" 
       android:layout_height="6dp" 
       android:layout_gravity="center" 
       android:layout_marginBottom="-6dp" 
       android:background="@drawable/circle" 
       android:gravity="center_horizontal" 
       android:padding="0dp" /> 

      <LinearLayout 
       android:id="@+id/controlElementList12" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:orientation="vertical" 
       android:padding="0dp" > 

       <modrobotics.code.ui.VerticalSeekBar 
        android:id="@+id/slider" 
        android:layout_width="wrap_content" 
        android:layout_height="0dp" 
        android:layout_gravity="bottom|center_horizontal" 
        android:layout_marginBottom="-20dp" 
        android:layout_weight="20" 
        android:padding="0dp" 
        android:progressDrawable="@drawable/seekbar_progress" 
        android:thumb="@drawable/seekbar_thumb" 
        android:thumbOffset="-1dp" /> 

       <ImageView 
        android:id="@+id/logo" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal" 
        android:layout_marginBottom="-20dp" 
        android:layout_marginTop="-20dp" 
        android:layout_weight="1" 
        android:padding="0dp" 
        android:src="@drawable/on6" > 
       </ImageView> 
      </LinearLayout> 
     </modrobotics.code.ui.BlockValueSliderView> 

编辑:

我曾尝试下面无济于事提到的建议。我已经删除了所有负边距,通过删除不必要的LinearLayout来简化布局,摆脱了GONE,图像的固定高度等等。我开始相信这个问题比这更大。

我正在使用带有PageAdapter的单个活动。看来我没有正确使用PageAdapter。 startUpdate()被一遍又一遍地调用。任何静态全局变量,我似乎已经清理或在单独的线程一些如何。我相信这些问题可能都有联系。也许我在使用PageAdapter时并不完全理解线程模型。

回答

0

原来这是一个与我正在使用的VerticalSeekBar实现有关的问题。

我正在旋转seekbar的拇指,并且还在seekbar上调用了bringToFront()。这两个调用的组合导致元素重新排列。不知道为什么,但删除这两行代码解决了我的问题。

0

在'modrobotics.code.ui.BlockValueSliderView'中将可见性从GONE更改为INVISIBLE。布局元素可能会重新排列,只要您以可编程方式将视图从GONE更改为该视图的VISIBLE,因为当视图设置为GONE时,它不占用布局中的任何空间,并且放置视图的其余部分在布局刚刚占据空间。如果它已经完成,它的行为就像它在布局中不存在一样。然后,当您将此视图设置为可见时,它会切换布局中的其余视图以为其自身创建一个空间。

+0

感谢您的回复。我已经变成了所有元素都看不见的东西。不幸的是,问题仍然存在。它似乎是子控制器触发的'controlElementList12' LinearLinear布局。 – EL45

+0

在您的ImageView徽标中,尝试将高度设置为0dp,因为您已将权重设置为1 –

+0

还尝试避免使用负边距 –