#android #webview
#Android #веб-просмотр
Вопрос:
Я сталкиваюсь с очень странной проблемой с TabHost, содержащим по 2 вкладки, каждая из которых является webview.Оба веб-просмотра содержат статический HTML-файл. На первой вкладке находится большой HTML-файл относительно большего размера, чем на второй.
Проблема в том, что когда я нажимаю на вторую вкладку, размер диалогового окна изменяется до очень маленького размера, а затем поэтапно изменяется до большего размера. Кто-нибудь сталкивался с этой проблемой раньше?
Вот код:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@ id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<WebView
android:id="@ id/about_webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
<LinearLayout
android:id="@ id/tab2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<WebView
android:id="@ id/whatsnew_webview"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
</FrameLayout>
</LinearLayout>
package in.co.madhur.vocabbuilder.fragments;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.webkit.WebView;
import android.widget.TabHost;
import in.co.madhur.vocabbuilder.App;
import in.co.madhur.vocabbuilder.Consts;
import in.co.madhur.vocabbuilder.R;
/**
* Created by madhur on 19-Jun-14.
*/
public class AboutDialog extends DialogFragment
{
private WebView aboutWebView, whatsNewView;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
View v = LayoutInflater.from(getActivity()).inflate(R.layout.about_dialog, null);
builder.setView(v);
TabHost tabHost = (TabHost) v.findViewById(R.id.about_tab);
aboutWebView = (WebView) v.findViewById(R.id.about_webview);
whatsNewView = (WebView) v.findViewById(R.id.whatsnew_webview);
tabHost.setup();
builder.setNeutralButton(android.R.string.ok, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
});
builder.setPositiveButton(R.string.feedback_button, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", Consts.MY_EMAIL, null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.feedback_button));
startActivity(Intent.createChooser(emailIntent, getString(R.string.send_email)));
}
});
builder.setNegativeButton(R.string.rate_button, new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
Uri uri = Uri.parse("market://details?id="
getActivity().getPackageName());
Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
try
{
startActivity(goToMarket);
}
catch (ActivityNotFoundException e)
{
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id="
getActivity().getPackageName())));
}
}
});
TabHost.TabSpec aboutTab = tabHost.newTabSpec(Consts.ABOUT_TAG);
aboutTab.setIndicator(getString(R.string.action_about));
aboutTab.setContent(R.id.tab1);
TabHost.TabSpec whatsnewTab = tabHost.newTabSpec(Consts.WHATS_NEW_TAG);
whatsnewTab.setIndicator(getString(R.string.whatsnew_tab));
whatsnewTab.setContent(R.id.tab2);
tabHost.addTab(aboutTab);
tabHost.addTab(whatsnewTab);
tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener()
{
@Override
public void onTabChanged(String tabId)
{
}
});
aboutWebView.loadUrl(Consts.ABOUT_URL);
whatsNewView.loadUrl(Consts.CHANGES_URL);
return builder.create();
}
}
Ответ №1:
Я решил с
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="match_content">
</TabWidget>
и установите минимальную ширину TabHost и минимальную высоту