Поиск Android не отображается - PullRequest
0 голосов
/ 20 июня 2019

Я сделал приложение для Android в своей школе, и я хочу реализовать searchview в recyclerview.Моим первым действием является навигация, затем, когда я использую меню, чтобы получить желаемое действие, оно открывает просмотр карт с большим количеством вещей.Основная проблема в том, что виджет searchview не отображается, поэтому я не могу использовать фильтр

Мои макеты

Основной макет

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        tools:openDrawer="start">

    <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/AppTheme.AppBarOverlay">

        <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="@android:color/white"
                app:popupTheme="@style/AppTheme.PopupOverlay" />

    </android.support.design.widget.AppBarLayout>

    <include layout="@layout/visitasrecyclerview" />



</android.support.v4.widget.DrawerLayout>

Макет Recyclerview

<?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"
                tools:showIn="@layout/activity_visitas">
                tools:context=".VisitasActivity">


    <android.support.v7.widget.RecyclerView
            android:id="@+id/visitasRecyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:layout_editor_absoluteX="745dp"
            tools:layout_editor_absoluteY="-51dp" />

    <ProgressBar
            android:id="@+id/visitas_loader"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"/>

    <TextView
            android:id="@+id/visitasProgress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/visitas_loader"
            android:text="A carregar"
            android:layout_centerHorizontal="true"/>


</RelativeLayout>

Макет списка

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:background="?attr/selectableItemBackground"
              android:clickable="true">

    <android.support.v7.widget.CardView
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
            android:id="@+id/card_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            card_view:cardBackgroundColor="@color/color_white"
            card_view:cardCornerRadius="5dp"
            card_view:cardElevation="5dp"
            card_view:cardUseCompatPadding="true">

        <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:padding="8dp">

            <!--1ª linha-->
            <TextView
                    android:text="Escola:"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/nameEscola"
                    tools:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:textStyle="bold"/>

            <TextView
                    android:id="@+id/textViewEscolaV"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/nameEscola"
                    android:layout_marginLeft="5dp"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:layout_marginStart="5dp"/>

            <!--2ª linha-->
            <TextView
                    android:text="Destino:"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/textViewEscolaV"
                    android:id="@+id/nameDestino"
                    tools:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:textStyle="bold"/>

            <TextView
                    android:id="@+id/textViewDestino"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/nameDestino"
                    android:layout_marginLeft="5dp"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:layout_marginStart="5dp"
                    android:justificationMode="inter_word"/>


            <!--saida-->

            <TextView
                    android:text="Datas da Visita:"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/textViewDestino"
                    android:id="@+id/nameDatasVisitas"
                    tools:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:textStyle="bold"/>

            <!--Saída-->

            <TextView
                    android:text="Partida:"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/nameDatasVisitas"
                    android:id="@+id/nameDataSaida"
                    tools:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:textStyle="bold"/>

            <TextView
                    android:id="@+id/textViewDataSaida"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/nameDatasVisitas"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:layout_toEndOf="@+id/nameDataSaida"
                    android:layout_toRightOf="@id/nameDataSaida"
                    android:layout_marginLeft="5dp"
                    android:paddingLeft="9dp" android:paddingStart="9dp"/>

            <TextView
                    android:text="Hora:"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/nameDatasVisitas"
                    android:id="@+id/nameHoraSaida"
                    tools:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:textStyle="bold"
                    android:layout_toEndOf="@+id/textViewDataSaida"
                    android:layout_toRightOf="@id/textViewDataSaida"
                    android:paddingLeft="15dp" android:paddingStart="15dp"/>

            <TextView
                    android:id="@+id/textViewHoraSaida"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:layout_below="@+id/nameDatasVisitas"
                    android:layout_toEndOf="@+id/nameHoraSaida"
                    android:layout_toRightOf="@id/nameHoraSaida"
                    android:paddingLeft="5dp"
            />

            <!--Chegada-->
            <TextView
                    android:text="Chegada:"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/nameDataSaida"
                    android:id="@+id/nameDataChegada"
                    tools:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:textStyle="bold"/>

            <TextView
                    android:id="@+id/textViewDataChegada"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/nameDataSaida"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:layout_toEndOf="@+id/nameDataChegada"
                    android:layout_toRightOf="@id/nameDataChegada"
                    android:layout_marginLeft="5dp"
            />

            <TextView
                    android:text="Hora:"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/nameDataSaida"
                    android:id="@+id/nameHoraChegada"
                    tools:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:textStyle="bold"
                    android:layout_toEndOf="@+id/textViewDataChegada"
                    android:layout_toRightOf="@id/textViewDataChegada"
                    android:paddingLeft="15dp" android:paddingStart="15dp"/>

            <TextView
                    android:id="@+id/textViewHoraChegada"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:layout_below="@+id/nameDataSaida"
                    android:layout_toEndOf="@+id/nameHoraChegada"
                    android:layout_toRightOf="@id/nameHoraChegada"
                    android:paddingLeft="5dp"
                    android:paddingStart="5dp"/>

            <!--Turmas-->
            <TextView
                    android:text="@string/turma_s"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/nameDataChegada"
                    android:id="@+id/nameTurmas"
                    tools:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:textStyle="bold"/>

            <TextView
                    android:id="@+id/textViewTurmas"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/nameDataChegada"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:layout_toEndOf="@+id/nameTurmas"
                    android:layout_toRightOf="@id/nameTurmas"
                    android:layout_marginLeft="5dp"
                    android:layout_marginStart="5dp"/>

            <TextView
                    android:text="@string/tipo_de_turma"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/nameTurmas"
                    android:id="@+id/nameTipoTurmas"
                    tools:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:textStyle="bold"/>

            <TextView
                    android:id="@+id/textViewTipoTurmas"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/textViewTurmas"
                    android:textAppearance="@style/Base.TextAppearance.AppCompat.Small"
                    android:layout_toEndOf="@+id/nameTipoTurmas"
                    android:layout_toRightOf="@id/nameTipoTurmas"
                    android:layout_marginLeft="5dp"
                    android:layout_marginStart="5dp"/>
            <TextView
                    android:layout_width="32dp"
                    android:layout_height="32dp"
                    android:id="@+id/pdfButton"
                    android:layout_below="@+id/textViewTipoTurmas"
                    android:background="@drawable/ic_pdf_download32"
                    android:textColor="@android:color/white"
                    android:layout_marginLeft="1dp"
                    android:layout_marginStart="1dp"/>

        </RelativeLayout>


    </android.support.v7.widget.CardView>

</LinearLayout>

И мой основной код

    public class VisitasActivity extends AppCompatActivity implements VisitasAdapter.visitasAdapterListener {

    private static final String URL_ATIVIDADES = "http://esmaior.pt/miga/db/getFromDatabase.php?&getAllVisitasMobile=getAllVisitasMobile";
    private RecyclerView recyclerView;
    private LinearLayoutManager vlinearLayoutManager;
    private DividerItemDecoration vdividerItemDecoration;
    private List<Visitas> visitasLista;
    private VisitasAdapter mAdapter;
    static ProgressBar visitas_loader;
    static TextView visitasProgress;
    private SearchView searchView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.visitasrecyclerview);
        recyclerView = findViewById(R.id.visitasRecyclerView);
        visitas_loader = findViewById(R.id.visitas_loader);
        visitasProgress = findViewById(R.id.visitasProgress);
        visitasLista = new ArrayList<>();
        mAdapter = new VisitasAdapter(this, visitasLista, this);
        whiteNotificationBar(recyclerView);
        vlinearLayoutManager = new LinearLayoutManager(this);
        vlinearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        vdividerItemDecoration = new DividerItemDecoration(recyclerView.getContext(), vlinearLayoutManager.getOrientation());
        RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
        recyclerView.setLayoutManager(mLayoutManager);
        recyclerView.setAdapter(mAdapter);
        loadVisitas();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);

        // Associate searchable configuration with the SearchView
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        searchView = (SearchView) menu.findItem(R.id.search)
                .getActionView();
        searchView.setSearchableInfo(searchManager
                .getSearchableInfo(getComponentName()));
        searchView.setMaxWidth(Integer.MAX_VALUE);

        // listening to search query text change
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                // filter recycler view when query submitted
                mAdapter.getFilter().filter(query);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String query) {
                // filter recycler view when text is changed
                mAdapter.getFilter().filter(query);
                return false;
            }
        });
        return true;
    }

    @Override
    public void onVisitasSelected(Visitas visitas) {
        Toast.makeText(getApplicationContext(), "Selected: " + visitas.getDestino() + ", " + visitas.getTurmas(), Toast.LENGTH_LONG).show();

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.search) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onBackPressed() {
        // close search view on back button pressed
        if (!searchView.isIconified()) {
            searchView.setIconified(true);
            return;
        }
        super.onBackPressed();
    }

}

ОБНОВЛЕНИЕ

Виджет меню

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      tools:context=".VisitasActivity">

    <item
            android:id="@+id/search"
            android:title="@string/app_name"
            android:icon="@drawable/ic_near_me"
            app:showAsAction="ifRoom|collapseActionView"
            app:actionViewClass="android.support.v7.widget.SearchView" />

</menu>

ОБНОВЛЕНИЕ logcat

    06-20 11:54:33.655 30067-30067/gmc.aessm D/ViewRootImpl@d37e285[MainActivity]: ViewPostIme pointer 0
06-20 11:54:33.794 30067-30067/gmc.aessm D/ViewRootImpl@d37e285[MainActivity]: ViewPostIme pointer 1
06-20 11:54:33.887 30067-30067/gmc.aessm D/ViewRootImpl@d37e285[MainActivity]: Relayout returned: old=[0,0][1080,1920] new=[0,0][1080,1920] result=0x1 surface={valid=true 524114235392} changed=false
06-20 11:54:33.896 30067-30067/gmc.aessm V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@c7c0cc0 nm : gmc.aessm ic=null
06-20 11:54:33.896 30067-30067/gmc.aessm I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:54:36.018 30067-30067/gmc.aessm D/ViewRootImpl@d37e285[MainActivity]: ViewPostIme pointer 0
06-20 11:54:36.129 30067-30067/gmc.aessm D/ViewRootImpl@d37e285[MainActivity]: ViewPostIme pointer 1
06-20 11:54:36.336 30067-30153/gmc.aessm I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
    (HTTPLog)-Static: isSBSettingEnabled false
06-20 11:54:36.351 30067-30067/gmc.aessm D/ViewRootImpl@988e4c6[VisitasActivity]: setView = DecorView@c21ec87[VisitasActivity] TM=true MM=false
06-20 11:54:36.354 30067-30067/gmc.aessm D/ViewRootImpl@d37e285[MainActivity]: MSG_WINDOW_FOCUS_CHANGED 0
06-20 11:54:36.366 30067-30067/gmc.aessm V/InputMethodManager: Not IME target window, ignoring
06-20 11:54:36.367 30067-30067/gmc.aessm D/ViewRootImpl@988e4c6[VisitasActivity]: dispatchAttachedToWindow
06-20 11:54:36.381 30067-30067/gmc.aessm V/Surface: sf_framedrop debug : 0x4f4c, game : false, logging : 0
06-20 11:54:36.382 30067-30067/gmc.aessm D/ViewRootImpl@988e4c6[VisitasActivity]: Relayout returned: old=[0,0][0,0] new=[0,0][1080,1920] result=0x7 surface={valid=true 524047654912} changed=true
06-20 11:54:36.390 30067-30090/gmc.aessm D/mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, egl_color_buffer_format *, EGLBoolean) returns 0x3000,  [1080x1920]-format:1
06-20 11:54:36.390 30067-30090/gmc.aessm D/OpenGLRenderer: eglCreateWindowSurface = 0x7a01598aa0
06-20 11:54:36.413 30067-30067/gmc.aessm D/ViewRootImpl@988e4c6[VisitasActivity]: MSG_RESIZED_REPORT: frame=Rect(0, 0 - 1080, 1920) ci=Rect(0, 72 - 0, 0) vi=Rect(0, 72 - 0, 0) or=1
    MSG_WINDOW_FOCUS_CHANGED 1
06-20 11:54:36.419 30067-30067/gmc.aessm V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@ec5994c nm : gmc.aessm ic=null
06-20 11:54:36.419 30067-30067/gmc.aessm I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:54:36.452 30067-30090/gmc.aessm D/OpenGLRenderer: eglDestroySurface = 0x7a11b6b850
06-20 11:54:36.462 30067-30067/gmc.aessm D/ViewRootImpl@d37e285[MainActivity]: Relayout returned: old=[0,0][1080,1920] new=[0,0][1080,1920] result=0x5 surface={valid=false 0} changed=true
06-20 11:54:36.498 30067-30072/gmc.aessm I/zygote64: Compiler allocated 8MB to compile void android.view.ViewRootImpl.performTraversals()
06-20 11:54:36.747 30067-30072/gmc.aessm I/zygote64: Do full code cache collection, code=252KB, data=194KB
    After code cache collection, code=248KB, data=163KB
06-20 11:54:36.804 30067-30072/gmc.aessm I/zygote64: Do partial code cache collection, code=252KB, data=177KB
    After code cache collection, code=252KB, data=177KB
    Increasing code cache capacity to 1024KB
06-20 11:54:36.902 30067-30067/gmc.aessm D/ViewRootImpl@d37e285[MainActivity]: Relayout returned: old=[0,0][1080,1920] new=[0,0][1080,1920] result=0x1 surface={valid=false 0} changed=false
06-20 11:55:06.133 30067-30067/gmc.aessm V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@a776755 nm : gmc.aessm ic=null
06-20 11:55:06.133 30067-30067/gmc.aessm I/InputMethodManager: startInputInner - mService.startInputOrWindowGainedFocus
06-20 11:55:11.238 30067-30090/gmc.aessm D/OpenGLRenderer: eglDestroySurface = 0x7a01598aa0
06-20 11:55:11.265 30067-30067/gmc.aessm D/ViewRootImpl@988e4c6[VisitasActivity]: Relayout returned: old=[0,0][1080,1920] new=[0,0][1080,1920] result=0x5 surface={valid=false 0} changed=true
06-20 11:55:11.266 30067-30067/gmc.aessm D/ViewRootImpl@988e4c6[VisitasActivity]: MSG_WINDOW_FOCUS_CHANGED 0
06-20 11:55:11.310 30067-30067/gmc.aessm D/ViewRootImpl@988e4c6[VisitasActivity]: Relayout returned: old=[0,0][1080,1920] new=[0,0][1080,1920] result=0x1 surface={valid=false 0} changed=false

ОБНОВЛЕНИЕ изображений приложения

MainActivity

[! [Введите описание изображенияздесь] [1]] [1]

VisitasActivity (где должен отображаться поиск)

[! [введите описание изображения здесь] [2]] [2]

С этим кодом мой поисковый запрос не отображается, и я не могу использовать виджет фильтра

Любая помощь?

Спасибо

Ответы [ 2 ]

1 голос
/ 20 июня 2019
setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setTitle("Search");

Получить идентификатор панели инструментов и передать его в setSupportActionBar

1 голос
/ 20 июня 2019

В вашем menu.xml замените

app:showAsAction="ifRoom|collapseActionView"

на

app:showAsAction="always"

РЕДАКТИРОВАТЬ: - Inflate main_layout.xml в вашей деятельности,Потому что панель инструментов находится внутри main_layout, а не в XML-файле recyclerVie.

...