gpt4 book ai didi

java - 获取Android EditText水平滚动而不自动换行

转载 作者:行者123 更新时间:2023-12-01 11:06:25 24 4
gpt4 key购买 nike

所以我有一个 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 都可以。感谢您的帮助!

最佳答案

也许我误解了,但这里是如何拥有一个可以水平滚动的 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());
}
});
}

如果我误解了或者您需要更多解释,请随时发表评论。

关于java - 获取Android EditText水平滚动而不自动换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32900578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com