获取Android EditText水平滚动,不带自动换行

时间:2015-10-02 04:31:57

标签: java android horizontal-scrolling

所以我有一个Android应用程序,可以将普通文本转录为ascii-art文本,例如来自" hello world"到

  _          _ _                            _     _ 
 | |__   ___| | | ___   __      _____  _ __| | __| |
 | '_ \ / _ \ | |/ _ \  \ \ /\ / / _ \| '__| |/ _` |
 | | | |  __/ | | (_) |  \ V  V / (_) | |  | | (_| |
 |_| |_|\___|_|_|\___/    \_/\_/ \___/|_|  |_|\__,_|

(抱歉移动用户,您可能无法看到,idk)

当然,我需要EditText,其中最终产品(ascii-art文本)不会自动换行,因为如果确实如此,它看起来都是乱七八糟的东西。我需要一个水平滚动的EditText。这是我目前的代码。

super.onCreate(savedInstanceState);

    Intent intent = getIntent();

    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    String letter;
    EditText textView = new EditText(this);
    Typeface courier = Typeface.createFromAsset(getAssets(),"Courier_Prime.ttf");
    textView.setTextSize(20);
    textView.setTypeface(courier);
    setContentView(textView);
    String value;
    String toPrint;
    int textLength = message.length();
    for(int i = 0; i <= 14; i++){
        for(int j = 0; j < textLength; j++){
            letter = message.substring(j,j+1).toUpperCase(Locale.getDefault());
            value = letter + i;
            toPrint = isometric.get(value);
            textView.append(toPrint);
            if(j == textLength-1){
                textView.append("\n");
            }
        }
    }

除了xml文件中的一个RelativeLayout之外什么都没有。

<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="com.dumpong.myfirstapp.DisplayMessageActivity" >

<EditText 
    android:id="@+id/asciiBox"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollHorizontally="true"/>


</RelativeLayout>

我不确定如何为EditText制作水平滚动条。程序化或通过XML是好的。谢谢你的帮助!

3 个答案:

答案 0 :(得分:1)

也许我误解了,但这里有一个可以水平滚动的EditText。

所需的布局:

<HorizontalScrollView
    android:id="@+id/SCROLLER_ID"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#333333"
    android:fillViewport="true"
    android:scrollbars="horizontal">

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

        <EditText
            android:id="@+id/TEXT_STATUS_ID"
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:layout_gravity="center"
            android:layout_weight="1.0"
            android:textColor="#cccccc"
            android:textSize="35sp" />
    </LinearLayout>
</HorizontalScrollView>

以下是相关代码:您必须在OnCreate()下调用init()。

private EditText mEditText;
private HorizontalScrollView mScrollView;

private void init() {
    mEditText = (EditText) findViewById(R.id.TEXT_STATUS_ID);
    mScrollView = (HorizontalScrollView) findViewById(R.id.SCROLLER_ID);
    // loadDoc();
    String s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
            + "Aliquam tempus convallis metus, ac congue dui elementum ut."
            + "Suspendisse rutrum non sapien feugiat fermentum."
            + "Phasellus vulputate quam in sapien vulputate venenatis."
            + "Pellentesque porta tincidunt nisi, et scelerisque augue facilisis nec."
            + "Curabitur eget risus quam."
            + "Maecenas pellentesque egestas enim, in ornare nisl lobortis id."
            + "Nunc vitae facilisis libero, vitae porttitor tellus.";
    mEditText.setText(s);
    scrollToBottom();
}

private void scrollToBottom() {
    mScrollView.post(new Runnable() {
        public void run() {
            mEditText.setHorizontallyScrolling(true);
            mEditText.setMovementMethod(new ScrollingMovementMethod());
            mScrollView.smoothScrollTo(0, mEditText.getBottom());
        }
    });
}

如果我误解或者您需要更多解释,请不要犹豫。

答案 1 :(得分:0)

使用horizo​​ntalscrollview包装您的编辑文本应该这样做。

<HorizontalScrollView> 
  <Edittext>...</Edittext>
 </HorizontalScrollView>

答案 2 :(得分:0)

  • 水平滚动EditText

改编自Kassisdion的答案[测试并致力于api 21; android:5.0]:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="top">

<HorizontalScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginLeft="2dp"
    android:layout_marginRight="2dp"
    android:layout_marginStart="2dp"
    android:layout_marginTop="2dp"
    android:fillViewport="true">

    <EditText
        android:id="@+id/editText"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        android:fadingEdge="none"
        android:gravity="top"
        android:inputType="textMultiLine"
        android:isScrollContainer="true"
        android:overScrollMode="ifContentScrolls"
        android:scrollHorizontally="true"
        android:scrollbarStyle="insideOverlay"
        android:scrollbars="vertical|horizontal"/>

</HorizontalScrollView>

</LinearLayout>