match_parent 在自定义工具栏中不起作用

match_parent is not working in custom toolbar

我制作了带有搜索和设置图标的自定义工具栏。当我点击搜索图标时,edittext 应该显示 match_parent 并且应该占据可用的 space 直到搜索图标。然而它并没有发生。它只是在左上角以非常小的 space 出现。请帮助我哪里错了

我想与 xml

分享我的全部代码

main_activity.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"
android:background="#DCDCDC"
android:padding="0dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="myresolver.faisal.home.com.myresolver.MainActivity">

<include
    android:id="@+id/toolbar"
    layout="@layout/my_toolbar"></include>

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/toolbar"
    android:fillViewport="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="1dp"
        android:weightSum="4"

        >


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal"
            android:weightSum="3">

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96"></ImageView>

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal"
            android:weightSum="3">

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal"
            android:weightSum="3">

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal"
            android:weightSum="3">

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal"
            android:weightSum="3">

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal"
            android:weightSum="3">

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />

            <ImageView
                style="@style/icon"
                android:background="@drawable/fear_96" />
        </LinearLayout>


    </LinearLayout>
   </ScrollView>

 </RelativeLayout>

mytoolbar.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.Toolbar 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="wrap_content" android:background="@color/orange" app:titleTextColor="@color/white"></android.support.v7.widget.Toolbar>

我的main_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu 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">

<item
    app:showAsAction="always"
    android:title="@string/search"
    android:icon="@drawable/ic_search_white_24dp"
    android:id="@+id/search"
    ></item>
<item
    app:showAsAction="always"
    android:title="@string/setting"
    android:icon="@drawable/ic_settings_white_24dp"
    android:id="@+id/setting"></item>
</menu>

我的search_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">

<EditText
    android:id="@+id/searchEditText"
    android:layout_width="match_parent"   // THIS IS NOT WORKING
    android:layout_height="wrap_content"
    android:imeOptions="actionSearch"
    android:inputType="text" />

</LinearLayout>

我的activity

EditText searchEditText;
boolean isSearchBoxOpen = false;
Toolbar toolbar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

}

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


    return super.onPrepareOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case R.id.search:
            onSearchedHandler();
            break;

        case R.id.setting:
            Toast.makeText(this, "Setting is UnderConstruction", Toast.LENGTH_LONG).show();
            break;
    }


    return super.onOptionsItemSelected(item);
}

public void onSearchedHandler() {
    if (isSearchBoxOpen) {

        String word = searchEditText.getText().toString();

        if (word != null) {
            Toast.makeText(this, "Searching for ..." + word, Toast.LENGTH_LONG).show();
        }
    } else {

        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayShowCustomEnabled(true);
        actionBar.setCustomView(R.layout.search_layout);
        actionBar.setDisplayShowTitleEnabled(false);

        searchEditText = (EditText) actionBar.getCustomView().findViewById(R.id.searchEditText);

        searchEditText.requestFocus();
        InputMethodManager keyboard = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
        keyboard.showSoftInput(searchEditText, InputMethodManager.HIDE_IMPLICIT_ONLY);


        isSearchBoxOpen = true;

    }

}

@Override
public void onBackPressed() {

    if (isSearchBoxOpen) {

        ActionBar actionBar = getSupportActionBar();

        actionBar.setDisplayShowCustomEnabled(false);
        actionBar.setDisplayShowTitleEnabled(true);
        isSearchBoxOpen = false;

        return;

    }

    super.onBackPressed();
}

使用以下代码进行工具栏 xlm 布局:

<android.support.v7.widget.Toolbar
    xmlns:app="schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/primaryColor"
    android:contentInsetLeft="0dp"
    android:contentInsetStart="0dp"
    app:contentInsetLeft="0dp"
    app:contentInsetStart="0dp"
    android:contentInsetRight="0dp"
    android:contentInsetEnd="0dp"
    app:contentInsetRight="0dp"
    app:contentInsetEnd="0dp" />

main_activity.xml 中的 RelativeLayout 中的填充阻止了它占用完整的 space 所以而不是

<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"
android:background="#DCDCDC"
android:padding="0dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="myresolver.faisal.home.com.myresolver.MainActivity">

您将填充移动到滚动视图,这样

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/toolbar"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:fillViewport="true">

当自定义视图因调用 setCustomView(resId) 而膨胀时,wrap_content 会被强加到它上面(如果查看视图转储,您会看到包装的 LinearLayout 缩小了,而不是编辑文本)。 您可以通过以下方式设置自定义视图:

    View customView = LayoutInflater.from(this).inflate(R.layout.search_layout, null);
    ActionBar.LayoutParams params = new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT);
    actionBar.setCustomView(customView, params);

只需添加此行即可占满宽度

app:contentInsetStart="0dp"