2

我正在处理的应用程序中的 LinearLayout 有问题。线性布局是垂直的。布局中有几个项目,包括 TextView、垂直 SeekBar 和 ImageView。

每当我更新 textView(即 setText())时,我的布局都会重新排列。ImageView 从底部变为中间。如果我替换 ImageView 中的可绘制对象,也会发生同样的事情。

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

        <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 时并不完全理解线程模型。

4

2 回答 2

0

在“modrobotics.code.ui.BlockValueSliderView”中,将可见性从 GONE 更改为 INVISIBLE。每当您以编程方式将此视图的可见性从 GONE 更改为 VISIBLE 时,布局元素可能会重新排列,因为当 View 设置为 GONE 时,它不会占用布局中的任何空间,并且放置了其余视图在布局中只占用它的空间。如果它消失了,它的行为就像它在布局中不存在一样。然后,当您将此视图设置为可见时,它会切换布局中的其余视图以为其自身准备空间。

于 2012-10-18T00:00:26.813 回答
0

这原来是与我使用的 VerticalSeekBar 实现相关的问题。

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

于 2012-11-15T17:26:26.410 回答