如何防止布局移动?

问题描述:

我有一个主要布局在我的问答游戏中,还有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> 
+0

请提供XML布局 – QVDev 2013-03-06 16:43:45

+0

在这里你去交配。整个XML。 – user2083882 2013-03-06 17:15:26

过了一会儿,但在这里我们去,也有这个问题,我将指出这里他们两个若干解决方案,可能是最用户友好:

  1. 使用一切滚动视图,恕我直言,这是用户最友好的解决方案。
  2. 使用scrollview仅用于具有定义高度的文本和按钮,然后将下面的文本和按钮设置为静态,然后使用相对布局。
  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" 
+0

我得到的错误:引起:java.lang.IllegalStateException:ScrollView只能托管一个直接的孩子 – user2083882 2013-03-07 12:02:35

+0

对不起,我似乎忘了粘贴一些代码:),我编辑了上面的答案。现在它应该工作。仅供参考滚动视图只能包含一个直接视图。而在之前的版本中,我发布的版本已经增加了。它现在应该工作。 – QVDev 2013-03-07 12:08:58

+0

仍然是一样的错误。 :(( – user2083882 2013-03-07 16:50:18