Frequently Asked Question
Vertical mode that fits to screen Height
Last Updated 11 months 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