我正在处理的应用中遇到LinearLayout问题。线性布局是垂直的。布局中有几个项目,包括TextView,垂直SeekBar和ImageView。
每当我更新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的单个Activity。好像我没有正确使用PageAdapter。正在一遍又一遍地调用startUpdate()。我似乎已经清理了任何静态全局变量,或者在单独的线程上如何清理。我相信这些问题都可能有关。也许我在使用PageAdapter时并不完全理解线程模型。
答案 0 :(得分:0)
在'modrobotics.code.ui.BlockValueSliderView'中将visiblity从GONE更改为INVISIBLE。每当您以可编程方式将可见性从此视图的GONE更改为VISIBLE时,布局元素可能会重新排列,因为当View设置为GONE时,它不会占用布局中的任何空间,而其余视图都会被放置在布局中占据了它的空间。如果它是GONE,它的行为就像它在布局中不存在一样。然后,当您将此视图设置为VISIBLE时,它会切换布局中的其余视图以为其自身准备空间。
答案 1 :(得分:0)
这结果是与我正在使用的VerticalSeekBar实现相关的问题。
我正在旋转搜索栏的拇指,并在搜索栏上调用了bringToFront()。这两个调用的组合导致元素被重新排列。不确定为什么,但删除这两行代码修复了我的问题。