Обрезка верхнего и нижнего текста в WebviewAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Обрезка верхнего и нижнего текста в Webview

Сообщение Anonymous »

Я пишу программу для чтения электронных книг.
Для пейджинга у меня возникла умная (глупая?) идея использовать собственный WebView. Я изменил его поведение, и он прокручивается на 1 страницу вниз, когда я проводю пальцем влево. Работает очень хорошо, за исключением одного... Верхний и нижний текст часто обрезаются. Я получил высоту моего WebView и размер шрифта, но потом я не знаю, что с этим делать... Есть ли способ не обрезать текст вверху и внизу моего WebView? Похоже, они использовали ту же самую технику, но с ScrollView в приложении PageTurner с открытым исходным кодом, но код довольно сложен, я не могу получить ту часть кода, которая могла бы меня заинтересовать.

Изображение


public class BookWebView extends WebView {
private final String LOG_TAG = BookView.class.getSimpleName();
private final int SWIPE_LIMIT = 80;
private float startX,diffX;

public BookWebView(Context context) {
super(context);
}

public BookWebView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public BookWebView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}

@Override
public boolean onTouchEvent(MotionEvent event)
{
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = event.getX();
break;
case MotionEvent.ACTION_UP:

if(Math.abs(diffX) > SWIPE_LIMIT) {
int visibleTextHeight = this.getHeight();
if(diffX < 0) {
Log.d(LOG_TAG,"SCROLLING DOWN");
this.scrollTo(0, getScrollY() + visibleTextHeight);
} else {
Log.d(LOG_TAG,"SCROLLING UP");
this.scrollTo(0, getScrollY() - visibleTextHeight);
}

} else {
Log.d(LOG_TAG, "==== NO SCROLL ====");
return false;
}
break;
case MotionEvent.ACTION_MOVE:
float endX = event.getX();
diffX = endX - startX;
break;
case MotionEvent.ACTION_POINTER_UP:

break;
}

return true;
}
}


MainActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

BookWebView bwvText = (BookWebView)findViewById(R.id.bwv_text);
String text = " %s ";

bwvText.loadData(String.format(text,getString(R.string.lorem_ipsum)),"text/html; charset=utf-8", "utf-8");

WebSettings webSettings = bwvText.getSettings();
int fontSize = webSettings.getDefaultFontSize();

bwvText.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
bwvText.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
bwvText.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
int webViewHeight = bwvText.getMeasuredHeight();
adjustHeight(webViewHeight,fontSize);
}
});
}

private void adjustHeight(int webViewHeight, int fontSize) {
// Is there something I can do here ?
}


activity_main.xml








Подробнее здесь: https://stackoverflow.com/questions/418 ... in-webview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»