当EditText在Android中获得焦点时,TextView会停止水平滚动

时间:2013-12-03 04:23:26

标签: android textview android-edittext scrollview

水平滚动问题

<TextView
        android:ellipsize="marquee"
        android:marqueeRepeatLimit ="marquee_forever"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/adView"
        android:scrollHorizontally="true"
        android:text="@string/adtext"
        android:textColor="#000000"
        android:singleLine="true"/>

我有一个单行文本视图,可以在屏幕上水平滚动。我上面有一个编辑文本视图。我的水平滚动工作正常,我没有问题。
但我的问题是每当我按下编辑文本(编辑文本获得焦点时),我的文本视图停止水平移动,直到我重新开始活动!!!
我该怎么办?请帮忙。
提前致谢。

3 个答案:

答案 0 :(得分:2)

这是这样做的。当我说它工作时,我不是在撒谎。现在没有支持在这里上传视频,否则我会告诉你。请参阅下面的完整代码: -

<强> MainActivity.java

package com.example.test2;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EditText edit = (EditText) findViewById(R.id.edit);
        //edit.clearFocus();

        //Now, in your MainActivity.class, add the following code:
            TextView txt = (TextView)findViewById(R.id.textview1);
            txt.setSelected(true);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

<强> activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <EditText
        android:layout_width="350dp"
        android:layout_height="70dp"
        android:id="@+id/edit"
        android:layout_alignParentTop="true" 
        android:background="@android:color/background_dark"
        android:textColor="@android:color/white"/>

    <TextView
        android:id="@+id/textview1"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:ellipsize="marquee"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:marqueeRepeatLimit="marquee_forever"
        android:scrollHorizontally="true"
        android:singleLine="true"
        android:text="hdfhghdfhudjfhudjfhudjfbhdjkfvbjfdkvbjfdkbvhfjkdbvhjkfdbvhdfjkvbnfdkhjbv"
        android:textColor="#000000"
        android:textSize="30dp" />

</RelativeLayout>

答案 1 :(得分:0)

请改用Horizo​​ntalScroll视图。您不会关注EditText。

<HorizontalScrollView 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="none"
    android:id="@+id/hrz_scroll"
    android:layout_weight="1" >

<TextView 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="your text view" />

</HorizontalScrollView>

如果焦点是TextView的主要关注点,请尝试:

textview[i].requestFocus();

答案 2 :(得分:0)

只需要其中一个就可以使TextView成为一行。 (android:scrollHorizo​​ntally或android:singleLine)。不推荐使用属性singleLine,因此首选scrollHorizo​​ntally。

将焦点设置为TextView有四种方法(我知道)。 其中一个是在Java中使用requestFocus()。如果你使用这个选项设置焦点,那么你需要android:focusable =“true”和android:focusableInTouchMode =“true”。 其他三个选项不应包括这两个属性。

以下两个示例使用scrollHorizo​​ntally或singleLine,使用4种方法将焦点设置为TextView。

Make a Scrolling Marquee, using scrollHorizontally, in a TextView

Deprecated: Make a Scrolling Marquee, using singleLine, in a TextView