#android
#Android
Вопрос:
Я хочу добавить Webview во фрагмент. Хотя он отлично работает при добавлении в root ( frameRoot
), он не работает при добавлении его в LinearLayout layoutC
XML:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@ id/root"
tools:context="com.example.android.guernsyrestaurants.MenueFragment">
<!-- TODO: Update blank fragment layout -->
<LinearLayout
android:orientation="vertical"
android:id="@ id/layoutC"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="menue" />
</LinearLayout>
</FrameLayout>
И код:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View root = inflater.inflate(R.layout.fragment_menue,container,false);
FrameLayout frameRoot = (FrameLayout) root.findViewById(R.id.root);
LinearLayout layoutC = (LinearLayout) root.findViewById(R.id.layoutC);
WebView webView = new WebView(getActivity());
webView.loadUrl("http://url/");
webView.setLayoutParams(new LinearLayout.LayoutParams(
root.getWidth(),
root.getHeight()));
// layoutC.addView(webView);
frameRoot.addView(webView);
return root;
}
Есть идеи?
Комментарии:
1. Возможно, вы добавляете параметры с помощью LinearLayout попробуйте добавить общие параметры LAYOUT, а не добавлять конкретные к LinearLayout. или попробуйте изменить их на FrameLayout. LayoutParams. Это может помочь.
2. Ваш
TextView
занимает все пространство вLinearLayout
. Для чего-либо еще нет места.
Ответ №1:
Вы устанавливаете высоту вашего TextView match_parent
, и поэтому он заполняет все пространство на экране. WebView добавляется в макет, но поскольку TextView заполняет весь экран, вы не можете видеть свой WebView. Попробуйте настроить wrap_content
высоту вашего TextView.
Ответ №2:
Изменить
webView.setLayoutParams(new LinearLayout.LayoutParams(
root.getWidth(),
root.getHeight()));
Для
webView.setLayoutParams(new LinearLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT));
Ответ №3:
Я тоже столкнулся с этой проблемой, смутил меня на несколько секунд, и я предполагаю, что, возможно, это вызвано тем, что я не добавил новое LinearLayout в исходный xml, поэтому я пытаюсь найти какой-нибудь метод, например setContentView(R.layout.activity_four_model_test), и, к счастью, я его нашел. Вам нужно добавить contentView после его создания. Удачи, парень. Но он будет расположен в верхней части страницы, поэтому вам нужно указать на него больше ссылок. 🙂
LinearLayout linearLayout=new LinearLayout(this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
webView.setLayoutParams(params);
linearLayout.addView(webView);
linearLayout.setVisibility(View.VISIBLE);
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
**addContentView(linearLayout,params);**