相对布局 - 长文本视图重叠

时间:2014-12-02 07:57:40

标签: android textview relativelayout overlap

我有一个相对布局,其中包含两个TextView:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/container"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  tools:context="com.example.pris.ViewActivity"
  tools:ignore="MergeRootFrame">

<TextView
    android:id="@+id/description"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/myDes" />

<TextView
    android:id="@+id/tex"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/description"
    android:text="@string/myText" />

<AutoCompleteTextView
    android:id="@+id/textfield"
    android:layout_width="200dip"
    android:layout_height="wrap_content"
    android:layout_below="@+id/tex"
    android:completionThreshold="1"
    android:inputType="text" />

<Button
    android:id="@+id/but"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="@string/suchen"
    android:layout_toRightOf="@+id/textfield"
    android:layout_alignParentRight="true"
    android:onClick="addToList" />

<Button
    android:id="@+id/but2"
    android:layout_weight="1.0"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="Liste löschen"
    android:layout_below="@+id/ex"
    android:onClick="removeList" />

<ListView
    android:id="@+id/ex"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_weight="1.0"
    android:choiceMode="singleChoice"
    android:layout_below="@+id/but">
</ListView>
</RelativeLayout>

我只插入&#34;描述&#34;最近,文本很长 - 现在它与它下面的所有内容重叠。

我该如何改变?

如果可能,我不想更改整个布局,遗憾的是,无法缩短文本。enter image description here

4 个答案:

答案 0 :(得分:1)

您是否尝试将ScrollView置于RelativeLayout上方?

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</ScrollView>

另外,检查.xml的结尾,你缺少结束标记

答案 1 :(得分:1)

<强>已更新

你必须为按钮提供对齐 android:layout_toRightOf =“@ + id / textfield”

检查

  <Button
            android:id="@+id/but"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="tex"
            android:layout_below="@id/tex"
            android:layout_toRightOf="@+id/textfield"
            android:layout_alignParentRight="true"
            android:onClick="addToList" />

以下是布局的完整代码

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:padding="10dp"
    android:layout_height="match_parent">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/description"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/dumy" />

        <TextView
            android:id="@+id/tex"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/description"
            android:text="tex" />

        <AutoCompleteTextView
            android:id="@+id/textfield"
            android:layout_width="200dip"
            android:layout_height="wrap_content"
            android:layout_below="@+id/tex"
            android:completionThreshold="1"
            android:inputType="text" />

        <Button
            android:id="@+id/but"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="tex"
            android:layout_below="@id/tex"
            android:layout_toRightOf="@+id/textfield"
            android:layout_alignParentRight="true"
            android:onClick="addToList" />

        <Button
            android:id="@+id/but2"
            android:layout_weight="1.0"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="Liste löschen"
            android:layout_below="@+id/ex"
            android:onClick="removeList" />

        <ListView
            android:id="@+id/ex"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_weight="1.0"
            android:choiceMode="singleChoice"
            android:layout_below="@+id/but"></ListView>
    </RelativeLayout>
</ScrollView>

和截图

result

答案 2 :(得分:1)

通过运行时添加以下功能来滚动文本:

TextView description = (TextView) findViewById(R.id.description);
description.setSingleLine();
description.setEllipsize(TruncateAt.MARQUEE);
description.setSelected(true);

<强>更新

因此,您必须创建自定义视图:

首先,创建以下类:

import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView;

public class ScrollingTextView extends TextView {

    public ScrollingTextView(Context context, AttributeSet attrs,
            int defStyle) {
        super(context, attrs, defStyle);
    }

    public ScrollingTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ScrollingTextView(Context context) {
        super(context);
    }

    @Override
    protected void onFocusChanged(boolean focused, int direction,
            Rect previouslyFocusedRect) {
        if (focused) {
            super.onFocusChanged(focused, direction, previouslyFocusedRect);
        }
    }

    @Override
    public void onWindowFocusChanged(boolean focused) {
        if (focused) {
            super.onWindowFocusChanged(focused);
        }
    }

    @Override
    public boolean isFocused() {
        return true;
    }
}

然后,在 xml布局中定义TextView时,请按以下方式定义:

<!-- use the path of the package which you put the class ScrollingTextView in -->
<com.example.ScrollingTextView
    android:id="@+id/description"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/myDes"
    android:ellipsize="marquee"
    android:lines="1"
    android:marqueeRepeatLimit="marquee_forever"
    android:singleLine="true"/>

然后在您的活动中声明它:

com.example.ScrollingTextView description = (com.example.ScrollingTextView) findViewById(R.id.description);

答案 3 :(得分:0)

我解决了。

实际上很简单。

我采用原始布局并添加:

 android:scrollHorizontally="true"

到第一个textview。在TextVew的API上找到了。

就是这样。