У меня есть 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>