水平滚动问题
<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"/>
我有一个单行文本视图,可以在屏幕上水平滚动。我上面有一个编辑文本视图。我的水平滚动工作正常,我没有问题。
但我的问题是每当我按下编辑文本(即编辑文本获得焦点时),我的文本视图停止水平移动,直到我重新开始活动!!!
我该怎么办?请帮忙。
提前致谢。
答案 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)
请改用HorizontalScroll视图。您不会关注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:scrollHorizontally或android:singleLine)。不推荐使用属性singleLine,因此首选scrollHorizontally。
将焦点设置为TextView有四种方法(我知道)。 其中一个是在Java中使用requestFocus()。如果你使用这个选项设置焦点,那么你需要android:focusable =“true”和android:focusableInTouchMode =“true”。 其他三个选项不应包括这两个属性。
以下两个示例使用scrollHorizontally或singleLine,使用4种方法将焦点设置为TextView。
Make a Scrolling Marquee, using scrollHorizontally, in a TextView
Deprecated: Make a Scrolling Marquee, using singleLine, in a TextView