如何防止一个TextView将另一个TextView推出屏幕?

时间:2017-03-23 12:20:19

标签: android

[求助] 标记有效的解决方案。 @GIBIN THOMAS:这个建议也有效(类似)。

下面我发布了一个问题,当评分增加时会出现问题,使其扩展,因此将其他TextView推出屏幕。我试图以各种方式改变文本视图本身和包装它们的布局的宽度和高度,没有任何运气。

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

enter image description here

这是我的XML文件:

布局&下面的文本视图都在另一个布局内(包括4个按钮,一个imageview和另一个textView - 在代码中排除)

<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>

5 个答案:

答案 0 :(得分:2)

试试这个布局:

正确使用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>

输出:

enter image description here

答案 1 :(得分:1)

这将解决您的问题

<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>

如果您有进一步的疑问,请删除我已添加的字符串

答案 2 :(得分:0)

请确保按照以下方式应用适当的重量和其他更改:

<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>

答案 3 :(得分:0)

只需提供LinearLayout,layout_weight =“5”..赞

android:layout_weight =“3”并制作android:layout_width =“0px”

注意=“根据间距设置布局重量”......

您已在其中拟合这两个文字视图的线性布局

答案 4 :(得分:0)

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>