所以我有一个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是好的。谢谢你的帮助!
答案 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)
使用horizontalscrollview包装您的编辑文本应该这样做。
<HorizontalScrollView>
<Edittext>...</Edittext>
</HorizontalScrollView>
答案 2 :(得分:0)
改编自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>