【问题标题】:How do I prevent one TextView from pushing the other out of the screen?如何防止一个 TextView 将另一个 TextView 推出屏幕?
【发布时间】:2017-03-23 12:20:19
【问题描述】:

[已解决] 标记了工作解决方案。 @GIBIN THOMAS:这个建议也很有效(类似)。

下面我发布了一个问题,当得分增加时会出现问题,使其扩展并因此将另一个 TextView 推出屏幕。我已经尝试以各种方式更改 TextViews 本身和包装它们的布局的宽度和高度,但没有任何运气。

问题:谁有一个很好的解决方案如何设置我的布局和/或 TextViews 的宽度和高度,以防止 Scoring TextView 将 Lives TextView 推出屏幕?

.

这是我的 XML 文件:

下面的布局和文本视图都在另一个布局中(包括 4 个按钮、一个图像视图和另一个文本视图 - 代码中不包括在内)

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="5dp"
    android:layout_marginStart="5dp"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/currentScoreText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="2dp"
            android:layout_marginRight="2dp"
            android:text="@string/current_score"
            android:textColor="@android:color/black"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/currentScoreEasy"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:text="@string/current_score_0"
            android:textColor="@android:color/holo_red_dark"
            android:textSize="20sp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="205dp"
        android:layout_marginStart="205dp"
        android:layout_weight="1"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/lives"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="2dp"
            android:layout_marginRight="2dp"
            android:gravity="center"
            android:text="@string/lives"
            android:textColor="@android:color/black"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/currentLivesEasy"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/lives_5"
            android:textColor="@android:color/holo_red_dark"
            android:textSize="20sp" />

    </LinearLayout>
</LinearLayout>

【问题讨论】:

  • 只需用这个相对布局替换您当前的分数线性布局,并将 android:layout_alignParentLeft="true" 设置为 currentScoreText 并将 android:layout_alignParenRight="true" 设置为 currentScoreEasy。请检查完整块以获得答案。

标签: android


【解决方案1】:

试试这个布局:

正确使用android:weightSumandroid:layout_weight

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="5dp"
    android:layout_marginStart="5dp"
    android:orientation="horizontal"
    android:weightSum="2">

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="1"
        android:gravity="left"
        android:orientation="horizontal"
        android:padding="10dp">

        <TextView
            android:id="@+id/currentScoreText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="2dp"
            android:layout_marginRight="2dp"
            android:text="SCORE"
            android:textColor="@android:color/black"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/currentScoreEasy"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="SCORE"
            android:textColor="@android:color/holo_red_dark"
            android:textSize="20sp" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:gravity="right"
        android:orientation="horizontal"
        android:padding="10dp">

        <TextView
            android:id="@+id/lives"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="2dp"
            android:layout_marginRight="2dp"
            android:gravity="center"
            android:text="Lives"
            android:textColor="@android:color/black"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/currentLivesEasy"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Lives"
            android:textColor="@android:color/holo_red_dark"
            android:textSize="20sp" />

    </LinearLayout>
</LinearLayout>

输出:

【讨论】:

    【解决方案2】:

    这将解决您的问题

    <LinearLayout android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="5dp"
        android:layout_marginStart="5dp"
        android:orientation="horizontal"
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:orientation="horizontal">
    
            <TextView
                android:id="@+id/currentScoreText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="2dp"
                android:layout_marginRight="2dp"
                android:text="Current Score"
                android:textColor="@android:color/black"
                android:textSize="20sp" />
    
            <TextView
                android:id="@+id/currentScoreEasy"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:text="Scrore"
                android:textColor="@android:color/holo_red_dark"
                android:textSize="20sp" />
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
    
            <TextView
                android:id="@+id/lives"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="2dp"
                android:layout_marginRight="2dp"
                android:gravity="center"
                android:text="Lives"
                android:textColor="@android:color/black"
                android:textSize="20sp" />
    
            <TextView
                android:id="@+id/currentLivesEasy"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Lives 5"
                android:textColor="@android:color/holo_red_dark"
                android:textSize="20sp" />
    
        </LinearLayout>
    </LinearLayout>
    

    如果您有进一步的疑问,请删除我添加的字符串,请随时在下面记下

    【讨论】:

    • 感谢您的建议,标记为有效的解决方案。但我也试过你的,效果一样好!感谢您的帮助!
    【解决方案3】:

    请确保应用适当的重量和其他更改如下:

    <LinearLayout android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="10dp"
        android:orientation="horizontal"
        android:padding="10dp"
        xmlns:android="http://schemas.android.com/apk/res/android">
    
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="left"
            android:orientation="horizontal">
    
            <TextView
                android:id="@+id/currentScoreText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="2dp"
                android:layout_marginRight="2dp"
                android:text="current_score"
                android:textColor="@android:color/black"
                android:textSize="20sp" />
    
            <TextView
                android:id="@+id/currentScoreEasy"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_marginLeft="10dp"
                android:layout_height="wrap_content"
                android:text="current_score_0"
                android:textColor="@android:color/holo_red_dark"
                android:textSize="20sp" />
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="right"
            android:orientation="horizontal">
    
            <TextView
                android:id="@+id/lives"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="2dp"
                android:layout_marginRight="2dp"
                android:gravity="center"
                android:text="lives"
                android:textColor="@android:color/black"
                android:textSize="20sp" />
    
            <TextView
                android:id="@+id/currentLivesEasy"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="lives_5"
                android:textColor="@android:color/holo_red_dark"
                android:textSize="20sp" />
    
        </LinearLayout>
    </LinearLayout>
    

    【讨论】:

      【解决方案4】:

      只要给 LinearLayout , layout_weight="5" .. 喜欢

      android:layout_weight="3" 并使 android:layout_width = "0px"

      Note="根据您的间距设置布局权重" ...

      你已经安装了这两个文本视图的线性布局

      【讨论】:

        【解决方案5】:
        Simply replace your current score linear layout with this relative layout and you are done.
        <RelativeLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
        
            <TextView
                android:id="@+id/currentScoreText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginEnd="2dp"
                android:layout_marginRight="2dp"
                android:layout_alignParentLeft="true"
                android:text="current_score"
                android:textColor="@android:color/black"
                android:textSize="20sp" />
        
            <TextView
                android:id="@+id/currentScoreEasy"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:text="current_score_0"
                android:textColor="@android:color/holo_red_dark"
                android:textSize="20sp" />
        
        </RelativeLayout>
        

        【讨论】:

        • 感谢您的建议,我已经标记了可行的解决方案。但也想尝试一下,不幸的是它不起作用。还是谢谢。
        • @FisnikB。您找到了很棒的解决方案。我正在使用它,它对我来说工作正常。我已根据您的需要进行了一些编辑。你能试试吗?谢谢
        • 我认为问题是由于您不知道我的其余代码的样子。猜猜这就是让你失望的原因。您现在刚刚进行了新的编辑?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-07-31
        • 2018-01-10
        • 2020-12-18
        • 2015-06-14
        • 1970-01-01
        • 1970-01-01
        • 2013-11-11
        相关资源
        最近更新 更多