searchview不扩展全宽

jas*_*son 3 android layoutparams searchview

基本上我希望searachview扩展和折叠,当后面有一个图像按钮时,当点击图标时它应该消失,当searchview崩溃时应该出现视图.

我正在使用搜索视图而不是在操作栏中.当我点击搜索图标时,它只扩展了一半的屏幕,但是它应该扩展完整的宽度,但是当我关闭搜索视图时应该是wrap_content.

<SearchView
        android:id="@+id/searchView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true">
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

android.view.ViewGroup.LayoutParams params = searchview.getLayoutParams();
params.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
Run Code Online (Sandbox Code Playgroud)

但我在这里得到错误setLayoutParams它说"添加到演员"

jan*_*2x3 6

首先你得到一个异常,因为如果你看看位于的search_view.xml

\的Android\Android的SDK \平台\机器人-18 \数据\ RES \布局\

您会发现SearchView基本上是简单的LinearLayout将几个小部件合并在一起.这就是为什么你得到了类演员异常的原因.代替

android.view.ViewGroup.LayoutParams params = searchview.getLayoutParams();
Run Code Online (Sandbox Code Playgroud)

使用

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) searchview.getLayoutParams();
Run Code Online (Sandbox Code Playgroud)

或者只是导入正确的类,然后你可以简单地使用它

import android.widget.LinearLayout.LayoutParams;

                      ...

LayoutParams params = (LayoutParams) searchview.getLayoutParams();
Run Code Online (Sandbox Code Playgroud)

你可以使用没有任何前缀的LayoutParams.

但我不认为设置LayoutParams包装内容会有所帮助.我会将你的to SearchViewImageButtonto 包装起来RelativeLayout,你可以在其中指定相对于其他视图的视图位置.然后只需将SearchView宽度设置为填充父级,这样就可以填充剩余空间.