скрытие CollapsingToolbarLayout при программном добавлении представления - PullRequest
0 голосов
/ 18 марта 2020

Я столкнулся с проблемой без решения. У меня есть панель приложений, содержащая CollapsingToolbarLayout, которая скрывается при прокрутке, и это нормально. Теперь я хочу добавить текст редактирования с listview (как AutoComleteTextView) под tablayout для предложений, и это нормально. проблема заключается в том, что когда я щелкаю по вкладке, а текст редактирования и вид списка появляются, CollapsingToolbarLayout скрывается при прокрутке. я хочу предотвратить скрытие collapsingToolbarLayout при появлении текста редактирования и оставить скрытым CollapsingToolBarLayout только при прокрутке. вот xml активности:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/yy">

    <com.google.android.material.appbar.AppBarLayout
        android:id="@+id/id_toolbar_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        android:background="@color/white">
        <androidx.appcompat.widget.Toolbar
            android:id="@+id/toolbar_target"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:theme="@style/toolbar"
            android:orientation="horizontal"
            android:background="@color/white"
            android:layout_marginBottom="1dp"
            app:layout_collapseMode="pin"
            android:elevation="5dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            android:layoutDirection="ltr">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="4000 CARS"
                android:textAlignment="center"
                android:textColor="#000"
                android:fontFamily="@font/lobster"
                android:textSize="@dimen/title_size"
                android:layout_marginLeft="8dp"/>

        </androidx.appcompat.widget.Toolbar>
    </com.google.android.material.appbar.AppBarLayout>
    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:id="@+id/coord"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_below="@id/id_toolbar_container"
        android:animateLayoutChanges="true">

        <com.google.android.material.appbar.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/white"
            android:id="@+id/appbar1"
            app:elevation="0dp"
            android:animateLayoutChanges="true"
            >
            <com.google.android.material.appbar.CollapsingToolbarLayout
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layoutDirection="ltr"
                android:background="@color/white"
                app:layout_scrollFlags="scroll|enterAlways">
                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical"
                    android:background="@color/white">
                    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                        android:orientation="horizontal"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_below="@id/toolbar"
                        android:layout_centerHorizontal="true"
                        android:layout_gravity="fill"
                        android:gravity="fill"
                        android:id="@+id/top_menu"
                        android:background="@color/year_tablayout">
                        <HorizontalScrollView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:id="@+id/scroll"
                            android:scrollbars="none">                               
                                <LinearLayout
                                    android:layout_width="wrap_content"
                                    android:layout_height="wrap_content"
                                    android:orientation="vertical"
                                    android:layout_marginRight="@dimen/story_margin_right">
                                    <de.hdodenhof.circleimageview.CircleImageView
                                        xmlns:app="http://schemas.android.com/apk/res-auto"
                                        android:id="@+id/story_image7"
                                        android:layout_width="@dimen/story_width"
                                        android:layout_height="@dimen/story_height"
                                        android:layout_marginTop="10dp"                                           android:layout_marginBottom="@dimen/text_under_story_margin"
                                        app:civ_border_color="#51000000"
                                        app:civ_border_width="2dp"
                                        android:padding="4dp"
                                        android:src="@drawable/car_c"
                                        android:background="@drawable/custom_story_solid_image"
                                        android:clickable="true"
                                        android:layout_marginRight="5dp"
                                        />
                                    <TextView
                                        android:padding="3dp"
                                        android:layout_width="match_parent"
                                        android:layout_height="wrap_content"
                                        android:text="Price"
                                        android:textAlignment="center"
                                        android:textColor="@color/text_under_story"
                                        android:id="@+id/t7"/>
                                </LinearLayout>
                            </LinearLayout>

                        </HorizontalScrollView>

                    </LinearLayout>
                </LinearLayout>
            </com.google.android.material.appbar.CollapsingToolbarLayout>
        </com.google.android.material.appbar.AppBarLayout>
        <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/cat_con"
        android:animateLayoutChanges="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
    </RelativeLayout>

    </androidx.coordinatorlayout.widget.CoordinatorLayout>

</RelativeLayout>

, а вот код фрагмента

import android.graphics.Color;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.appbar.AppBarLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout;
import com.google.android.material.tabs.TabLayout;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import static com.facebook.FacebookSdk.getApplicationContext;

public class CityFragment extends Fragment {
    TabLayout tabLayout;
    ViewPager viewPager;


    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
       View view = inflater.inflate(R.layout.city_fragment, container, false);
        tabLayout = view.findViewById(R.id.tabLayout11);
        viewPager = view.findViewById(R.id.viewPager_city);
        tabLayout.addTab(tabLayout.newTab().setText("city1"));
        tabLayout.addTab(tabLayout.newTab().setText("city2"));
        tabLayout.addTab(tabLayout.newTab().setText("city3"));
        tabLayout.addTab(tabLayout.newTab().setText("city4"));
        tabLayout.addTab(tabLayout.newTab().setText("city5"));
        tabLayout.addTab(tabLayout.newTab().setText("city6"));
        tabLayout.setTabGravity(TabLayout.GRAVITY_CENTER);
        final CityAdapter adapter = new CityAdapter(getActivity(), getChildFragmentManager(),
                tabLayout.getTabCount());
        viewPager.setAdapter(adapter);
        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        tabLayout.setTabTextColors(Color.parseColor("#000000"), Color.parseColor("#5390cd"));
        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                viewPager.setCurrentItem(tab.getPosition());
                if(tab.getPosition() > 0){
                    viewPager.getChildAt(0).findViewById(R.id.recyclerView).setVisibility(view.VISIBLE);
                    viewPager.getChildAt(0).findViewById(R.id.autocomplete_city).setVisibility(view.VISIBLE);
                }
            }
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
            }
        });
        return view;

    }

}

, а вот дочерний код фрагмента

import android.graphics.PorterDuff;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.tabs.TabLayout;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;


public class Aleppo extends Fragment {
    TabLayout tabLayout,tab;
    ViewPager viewPager;
    ArrayAdapter<String> dataAdapter = null;
    View view;
    ListView listView;
    EditText myFilter;
    public Aleppo(){
        // Required empty public constructor
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.aleppo, container, false);
        tabLayout = view.findViewById(R.id.tabLayout1);
        viewPager = view.findViewById(R.id.viewPager1);
        tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.mode1));
        tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.mode2));
        tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.video_mode));
        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
        displayListView();
        tabLayout.getTabAt(0).getIcon().setColorFilter(getResources().getColor(R.color.mode_icon), PorterDuff.Mode.SRC_IN);
        final YearAdapter adapter = new YearAdapter(getActivity(), getChildFragmentManager(),
                tabLayout.getTabCount());
        viewPager.setAdapter(adapter);
        viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
         Mode1 m = new Mode1();

        tabLayout.getTabAt(0).getIcon().setColorFilter(getResources().getColor(R.color.mode_icon), PorterDuff.Mode.SRC_IN);
        transaction.commit();
        tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                if(tab.getPosition() == 0) {
                    Mode1 m = new Mode1();
                    viewPager.setCurrentItem(tab.getPosition());
                    tabLayout.getTabAt(tab.getPosition()).getIcon().setColorFilter(getResources().getColor(R.color.mode_icon), PorterDuff.Mode.SRC_IN);

                }else if(tab.getPosition() == 1) {
                    Mode2 m = new Mode2();
                    viewPager.setCurrentItem(tab.getPosition());
                    tabLayout.getTabAt(tab.getPosition()).getIcon().setColorFilter(getResources().getColor(R.color.mode_icon), PorterDuff.Mode.SRC_IN);

                }else if(tab.getPosition() == 2) {
                    VideoMode m = new VideoMode();
                    viewPager.setCurrentItem(tab.getPosition());
                    tabLayout.getTabAt(tab.getPosition()).getIcon().setColorFilter(getResources().getColor(R.color.mode_icon), PorterDuff.Mode.SRC_IN);
                }
            }
            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                tabLayout.getTabAt(tab.getPosition()).getIcon().setColorFilter(getResources().getColor(R.color.tumblr_grey), PorterDuff.Mode.SRC_IN);
            }
            @Override
            public void onTabReselected(TabLayout.Tab tab) {
            }
        });
        tab = getParentFragment().getView().findViewById(R.id.tabLayout11);
        if(tab.getSelectedTabPosition() > 0){
            listView.setVisibility(listView.VISIBLE);
            myFilter.setVisibility(myFilter.VISIBLE);
        }else{
            listView.setVisibility(listView.GONE);
            myFilter.setVisibility(myFilter.GONE);
        }


        return view;
    }
    private void displayListView() {
        List<String> countryList = null;
if(getParentFragment() instanceof ModelFragment){
    countryList = new ArrayList<String>();
    countryList.add("BMWXX1");
    countryList.add("BMWXE2");
    countryList.add("MERY1");
    countryList.add("MERX2");
    countryList.add("Rang1");
    countryList.add("AUDIXX");
    countryList.add("TOYTAX1");
}
        //Array list of countries
        Collections.sort(countryList);
        //create an ArrayAdaptar from the String Array
        dataAdapter = new ArrayAdapter<String>(getContext(), R.layout.city_list, countryList);
        listView = (ListView) view.findViewById(R.id.recyclerView);
        // Assign adapter to ListView
        listView.setAdapter(dataAdapter);
        myFilter = (EditText) view.findViewById(R.id.autocomplete_city);
        //enables filtering for the contents of the given ListView
        listView.setTextFilterEnabled(true);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                // When clicked, show a toast with the TextView text
                Toast.makeText(getContext(),
                        ((TextView) view).getText(), Toast.LENGTH_SHORT).show();
                myFilter.setText(((TextView) view).getText());
                listView.setVisibility(listView.GONE);

            }
        });
        myFilter.addTextChangedListener(new TextWatcher() {

            public void afterTextChanged(Editable s) {
            }
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                listView.setVisibility(listView.VISIBLE);
                dataAdapter.getFilter().filter(s.toString());
            }
        });
    }
    }

и вот дочерний фрагмент xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout 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"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    tools:context=".ui.mainpage.F2016">
    <!-- TODO: Update blank fragment layout -->
    <EditText
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/autocomplete_city"
        android:layout_width="match_parent"
        android:background="@null"
        android:hint="Search Here ..."
        android:textAlignment="textStart"
        android:textColorHint="#aaa"
        android:paddingLeft="@dimen/_10sdp"
        android:maxLines="1"
        android:layout_below="@+id/top_menu"
        android:textCursorDrawable="@drawable/cursor"
        android:layout_height="@dimen/_30sdp"
        android:drawableRight="@drawable/ic_search_black_24dp"
        android:paddingRight="10dp">
        <requestFocus />
    </EditText>
    <ListView
        android:id="@+id/recyclerView"
        android:layout_below="@id/autocomplete_city"
        android:layout_width="match_parent"
        android:layoutDirection="ltr"
        android:layout_height="150dp">
    </ListView>
    <com.google.android.material.tabs.TabLayout
        android:id="@+id/tabLayout1"
        android:layout_below="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/year_tablayout"
        android:layout_marginTop="10dp"
        android:elevation="3dp"
        app:tabIndicator="@null">
    </com.google.android.material.tabs.TabLayout>
<androidx.viewpager.widget.ViewPager
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/viewPager1"
    android:layout_below="@id/tabLayout1">

</androidx.viewpager.widget.ViewPager>

</RelativeLayout>

, когда я щелкаю изображение в упражнении, первый фрагмент появляется в относительной компоновке (id = cat_con). этот фрагмент содержит tablayout и viewpager. когда я щелкаю по вкладке, текст редактирования и вид списка появляются под вкладкой табуляции и скрывают CollapsingToolBarLayout (здесь проблема). Я хочу запретить скрывать эту панель инструментов, когда появляются текст редактирования и вид списка. Я очень устал из-за этой проблемы. пожалуйста, помогите мне. заранее спасибо.

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