Frequently Asked Question
Vertical mode that fits to screen Height
Last Updated a year ago
The default behavior of the vertical mode is to fit according to screen width.
If you want to make it fit to screen height instead, create a custom class that extends PDFLayoutVert as below (make sure to put it under package com.radaee.view, to be able to use all the protected properties).
public class VerticalFitHeight extends PDFLayoutVert { public VerticalFitHeight(Context context) { super(context); } @Override public void vLayout() { if(m_w <= 0 || m_h <= 0 || m_doc == null || m_pages == null) return; int cnt = m_doc.GetPageCount(); int cur; m_scale_min = ((float)(m_h - m_page_gap)) / m_page_maxh; m_scale_max = m_scale_min * m_zoom_level; if(m_scale < m_scale_min) m_scale = m_scale_min; if(m_scale > m_scale_max) m_scale = m_scale_max; boolean clip = m_scale / m_scale_min > m_zoom_level_clip; m_tw = (int)(m_page_maxw * m_scale); if( m_tw < m_w ) m_tw = m_w; m_th = 0; int y = m_page_gap>>1; for(cur = 0;cur < cnt;cur++) { int w = (int)(m_doc.GetPageWidth(cur) * m_scale), cw = 0; int h = (int)(m_doc.GetPageHeight(cur) * m_scale); if (w + m_page_gap < m_w) cw = m_w; else cw = (int) (w + m_page_gap * m_scale); int x = Math.abs(cw - w) / 2; m_pages[cur].vLayout(x, y, m_scale, clip); y += h + m_page_gap; } m_th = y - (m_page_gap>>1); } }
Note, you need to modify PDFLayoutView.PDFSetView to use your custom class instead of PDFLayoutVert