public
class MainActivity extends Activity {
/**
Called when the activity is first created. */
private
TextView mTextView;
@Override
public
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView
= (TextView) findViewById(R.id.textView1);
mTextView
.setText("this
is for testing \nthis is for testing \nthis is for testing \nthis is
for testing \nthis is for testing \nthis is for testing \n");
mTextView.setMovementMethod(new
ScrollingMovementMethod() {
public
void onTakeFocus(TextView widget, Spannable text, int dir) {
}
@Override
public
boolean onKeyDown(TextView widget, Spannable buffer,
int
keyCode, KeyEvent event) {
switch
(keyCode) {
case
KeyEvent.KEYCODE_DPAD_DOWN:
for
(int i = 0, scrollAmount = getScrollAmount(widget); i <
scrollAmount; i++) {
down(widget,
buffer);
}
return
true;
case
KeyEvent.KEYCODE_DPAD_UP:
for
(int i = 0, scrollAmount = getScrollAmount(widget); i <
scrollAmount; i++) {
up(widget,
buffer);
}
return
true;
default:
return
super.onKeyDown(widget, buffer, keyCode, event);
}
}
private
int getScrollAmount(TextView widget) {
final
int visibleLineCount = (int) ((1f * widget.getHeight()) / widget
.getLineHeight());
int
scrollAmount = visibleLineCount - 1;
if
(scrollAmount < 1) {
scrollAmount
= 1;
}
return
scrollAmount;
}
});
}
@Override
public
boolean onKeyDown(int keyCode, KeyEvent event) {
switch
(keyCode) {
case
KeyEvent.KEYCODE_DPAD_DOWN:
return
true;
case
KeyEvent.KEYCODE_DPAD_UP:
mTextView.dispatchKeyEvent(event);
return
true;
default:
return
super.onKeyDown(keyCode, event);
}
}
}
No comments:
Post a Comment