2015-05-31 4 views
1

SCREENSHOT:как центр содержания WebView в андроиде

https://camo.githubusercontent.com/7c4b76724b703bcded8aafbba9c012542726462c/687474703a2f2f692e696d6775722e636f6d2f716375554d664a2e706e6725374275726c253744

Привет, есть ли способ я могу центрировать текст и изображение статей?

это файл макета:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:ptr="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


    <RelativeLayout 
     android:id="@+id/header" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:gravity="center"> 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="5dp" 
     android:text="" 
     android:textSize="20sp" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:textStyle="bold" /> 
    </RelativeLayout> 

    <ScrollView 
     android:id="@+id/sv" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/header" > 

     <LinearLayout 
      android:id="@+id/lin" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center_horizontal" 
      android:orientation="vertical" > 

      <WebView 
       android:id="@+id/desc" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="5dp" 
       android:scrollbarStyle="insideOverlay" 
       android:text="@string/desc" /> 
     </LinearLayout> 
    </ScrollView> 
</RelativeLayout> 

Java Code

package com.iven.lfflfeedreader.mainact; 

import com.iven.lfflfeedreader.R; 
import com.iven.lfflfeedreader.domparser.RSSFeed;  
import android.os.Bundle;  
import android.support.v4.app.Fragment;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.ViewGroup;  
import android.webkit.WebSettings;  
import android.webkit.WebView;  
import android.webkit.WebSettings.LayoutAlgorithm;  
import android.widget.ScrollView;  
import android.widget.TextView; 


public class ArticleFragment extends Fragment { 
    private int fPos;  
    RSSFeed fFeed; 

    @Override  
    public void onCreate(Bundle savedInstanceState) {  
     super.onCreate(savedInstanceState); 
     fFeed = (RSSFeed) getArguments().getSerializable("feed");  
     fPos = getArguments().getInt("pos");  
    } 

    @Override  
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
     View view = inflater  
       .inflate(R.layout.article_fragment, container, false); 
     TextView title = (TextView) view.findViewById(R.id.title);  
     WebView wb = (WebView) view.findViewById(R.id.desc); 
     ScrollView sv = (ScrollView) view.findViewById(R.id.sv); 
     sv.setVerticalFadingEdgeEnabled(true); 

     // Set webview settings  
     WebSettings ws = wb.getSettings();  
     ws.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 

     // Set the views  
     title.setText(fFeed.getItem(fPos).getTitle()); 
     wb.loadData(fFeed.getItem(fPos).getDescription(), "text/html; charset=utf-8", "UTF-8"); 
     return view;  
    } 
} 

исходный код приложения доступен здесь

благодаря

https://github.com/enricocid/lffl-feed-reader

ответ

2

Try,

wb.getSettings().setDefaultZoom(ZoomDensity.FAR); 

Это уменьшит масштаб и подогнать изображение на экране и показать его в центре.

Примечание. Поскольку WebView используется для визуализации сценариев и отображения его в представлении, пока источник веб-url не выровнен по центру, вы не можете его изменить. Однако вы можете анализировать веб-контент, а затем показывать их любым настраиваемым способом.

До сих пор проект github, о котором вы говорите, также использовал тот же подход. Парсер html под названием Jsoup использовался для анализа содержимого html и отображения в представлении.

+1

Этот метод был устаревшим в уровне API 19 :) –

+0

Попробуйте это, webview.setInitialScale (1); –

1

Я решил свою проблему, добавив

// set image scale to fit screen if larger than screen width 
    DisplayMetrics displayMetrics = new DisplayMetrics(); 
    WindowManager wm = (WindowManager) view.getContext().getSystemService(Context.WINDOW_SERVICE); 
    wm.getDefaultDisplay().getMetrics(displayMetrics); 
    int screenWidth = displayMetrics.widthPixels; // minus some padding values if you have any left/right padding 
    Drawable drawable = getResources().getDrawable(R.id.image); 
    int wi = drawable.getIntrinsicWidth(); 

    double scale = (wi>screenWidth) ? (double)screenWidth/wi : 1.0; 
    wb.setInitialScale((int) (scale*340));'code' 

теперь изображение находится в центре ниже реферата и на верхней части входа статьи ... :) будет толкать изменения позже мерзавец. спасибо в любом случае :)

Смежные вопросы