Я столкнулся с проблемой без решения. У меня есть панель приложений, содержащая 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 (здесь проблема). Я хочу запретить скрывать эту панель инструментов, когда появляются текст редактирования и вид списка. Я очень устал из-за этой проблемы. пожалуйста, помогите мне. заранее спасибо.