如何防止布局移动



我在我的测验游戏中有一个主布局,其中有3个嵌套布局,一个在另一个下面,垂直。在顶部,我有一个文本视图的问题,中间有四个按钮垂直排列。现在,当我有一行问题时,一切都很好,但一旦问题变成两行,我的按钮就下移一行。如何预防这种情况?我希望我的问题下面的所有内容都是固定的,静态的,而不是移动的。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background"
    android:orientation="vertical" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="404dp"
        android:orientation="vertical"
        android:weightSum="2"
         >
  <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="1" >
    <TextView
        android:id="@+id/tvPitanje"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="20dp"
        android:gravity="center"
        android:text="@string/tvPitanje"
        android:textSize="22sp" /> 
    </LinearLayout>
<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="1" >
    <Button
        android:id="@+id/bOdgovor1"
        android:layout_width="260dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:layout_marginTop="10dp"
        android:background="@drawable/buttons"
        android:text="@string/bOdgovor1"
        android:textSize="26sp" />
    <Button
        android:id="@+id/bOdgovor2"
        android:layout_width="260dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:background="@drawable/buttons"
        android:text="@string/bOdgovor2"
        android:textSize="26sp" />
    <Button
        android:id="@+id/bOdgovor3"
        android:layout_width="260dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:background="@drawable/buttons"
        android:text="@string/bOdgovor3"
        android:textSize="26sp" />
    <Button
        android:id="@+id/bOdgovor4"
        android:layout_width="260dp"
        android:layout_height="60dp"
        android:layout_gravity="center"
        android:layout_marginTop="20dp"
        android:background="@drawable/buttons"
        android:text="@string/bOdgovor4"
        android:textSize="26sp" />
    </LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal" >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" >
        <Button
            android:id="@+id/bIzlazIzKviza"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="15dp"
            android:background="@drawable/buttons"
            android:text="@string/bIzlazKviz"
            android:textSize="23sp" />
        </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:orientation="vertical" >
        <TextView
            android:id="@+id/tvCountdown"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="50dp"
            android:layout_marginTop="5dp"
            android:gravity="center"
            android:text="@string/tvCountdown"
            android:textColor="#ff0000"
            android:textSize="29sp" />
        <TextView
            android:id="@+id/tvSkor"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dp"
            android:layout_marginTop="5dp"
            android:gravity="center"
            android:text="@string/tvSkor"
            android:textSize="23sp" />
        </LinearLayout>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1" >
        <TextView
            android:id="@+id/tvBrojPitanja"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="30dp"
            android:text="1"
            android:textSize="32sp" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>

稍微晚一点,但现在我们开始吧,这个问题有几个解决方案,我在这里指出其中两个可能是最用户友好的:

  1. 使用滚动视图,这是最用户友好的解决方案。
  2. 只对文本和按钮使用滚动视图,并将下面的文本和按钮静态放在下面,然后使用相对布局
  3. 选框文本视图

是第一个选项,包含了一些布局重构,第二个我不推荐使用,如果你有一个例子,它很容易实现:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:background="@android:color/background_light"
              android:orientation="vertical">
    <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">
        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical">
            <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical">
                <TextView
                        android:id="@+id/tvPitanje"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center"
                        android:layout_marginLeft="5dp"
                        android:layout_marginRight="5dp"
                        android:layout_marginTop="20dp"
                        android:gravity="center"
                        android:text="long text that will automaticly scroll and make sure all content will be displayed right in the scrollview this is the best case scenario"
                        android:textSize="22sp"/>
                <Button
                        android:id="@+id/bOdgovor1"
                        android:layout_width="260dp"
                        android:layout_height="60dp"
                        android:layout_gravity="center"
                        android:layout_marginTop="10dp"
                        android:text="one"
                        android:textSize="26sp"/>
                <Button
                        android:id="@+id/bOdgovor2"
                        android:layout_width="260dp"
                        android:layout_height="60dp"
                        android:layout_gravity="center"
                        android:layout_marginTop="20dp"
                        android:text="two"
                        android:textSize="26sp"/>
                <Button
                        android:id="@+id/bOdgovor3"
                        android:layout_width="260dp"
                        android:layout_height="60dp"
                        android:layout_gravity="center"
                        android:layout_marginTop="20dp"
                        android:text="three"
                        android:textSize="26sp"/>
                <Button
                        android:id="@+id/bOdgovor4"
                        android:layout_width="260dp"
                        android:layout_height="60dp"
                        android:layout_gravity="center"
                        android:layout_marginTop="20dp"
                        android:text="four"
                        android:textSize="26sp"/>
            </LinearLayout>
            <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="fill_parent"
                    android:orientation="horizontal">
                <LinearLayout
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight="1">
                    <Button
                            android:id="@+id/bIzlazIzKviza"
                            style="?android:attr/buttonStyleSmall"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:layout_marginLeft="15dp"
                            android:text="left"
                            android:textSize="23sp"/>
                </LinearLayout>
                <LinearLayout
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:orientation="vertical">
                    <TextView
                            android:id="@+id/tvCountdown"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="50dp"
                            android:layout_marginTop="5dp"
                            android:gravity="center"
                            android:text="next"
                            android:textColor="#ff0000"
                            android:textSize="29sp"/>
                    <TextView
                            android:id="@+id/tvSkor"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_marginLeft="30dp"
                            android:layout_marginTop="5dp"
                            android:gravity="center"
                            android:text="middle"
                            android:textSize="23sp"/>
                </LinearLayout>
                <LinearLayout
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight="1">
                    <TextView
                            android:id="@+id/tvBrojPitanja"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="center"
                            android:layout_marginLeft="30dp"
                            android:text="right"
                            android:textSize="32sp"/>
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

选框解决方案不太好

android:singleLine="true" 
android:ellipsize="marquee"
android:marqueeRepeatLimit ="marquee_forever"
android:scrollHorizontally="true"
android:focusable="true"
android:focusableInTouchMode="true" 

最新更新