Android /add WebView не работает при добавлении его в LinearLayout

#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);**