Пользовательский WebView без макета, setLayoutParams не работает? - PullRequest
0 голосов
/ 06 мая 2020

У меня есть MathView ( CustomWebview ), и я конвертирую этот MathView в ImageView. Я делаю это для максимальной производительности RecyclerView. Но когда я создаю Layout в view_item RecyclerView, я добавляю только ImageView без MathView. Если я устанавливаю MathView (WebView) в (view_item), я получаю плохую производительность.

Как установить Mathview LayoutParams и затем получить их?

Чтобы решить эту проблему, я создал новый проект, в котором есть: ImageView и new MathView (), без макета в activity_main. xml

MainActivity. java

MathView formula_two;
ImageView image;
String tex ="This come from string. You can insert inline formula:" +
        " \\(ax^2 + bx + c = 0\\) " +
        "or displayed formula: $$\\sum_{i=0}^n i^2 = \\frac{(n^2+n)(2n+1)}{6}$$";


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

    image = findViewById(R.id.image);

    //for getting attributes of layout
    XmlPullParser parser = getResources().getXml(R.xml.form);
    try {
        parser.next();
        parser.nextTag();
    } catch (Exception e) {
        e.printStackTrace();
    }

    AttributeSet attr = Xml.asAttributeSet(parser);
    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();

    //create MathView 
    formula_two =new MathView(this, attr);
    formula_two.setLayoutParams(new ViewGroup.LayoutParams((ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));

    formula_two.setText(tex);





    formula_two.setWebChromeClient(new WebChromeClient()
    {
        public void onProgressChanged(WebView view, int progress)
        {
            if(progress==100)
            {

                Log.d("TAGGG", "onCreate: "+formula_two.getHeight()+"  "+formula_two.getWidth());
            //convert webview to imageview
            image.setImageBitmap(b);

            }

        }
    });




}

Когда я получаю высоту и ширину, я получаю 0;

xml / form. xml

<?xml version="1.0" encoding="utf-8"?>
<io.github.kexanie.library.MathView android:id="@+id/formula_three"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     auto:engine="KaTeX"
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:auto="http://schemas.android.com/apk/res-auto">
</io.github.kexanie.library.MathView>

/ layout / actitivity_main. xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:auto="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical">



<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/image"/>


</RelativeLayout>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...