【问题标题】:searchview not expanding full width搜索视图未扩展全宽
【发布时间】:2013-10-23 23:07:37
【问题描述】:

基本上我希望搜索视图在有一个图像按钮时展开和折叠,当单击图标时该按钮应该消失,当搜索视图折叠时应该出现视图。

我正在使用搜索视图,而不是在操作栏中。当我点击搜索图标时,它只扩展了一半的屏幕,但它应该扩展完整的宽度,但是当我关闭搜索视图时应该是 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">

我也试过了:

android.view.ViewGroup.LayoutParams params = searchview.getLayoutParams();
params.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));

但我在这里遇到错误 setLayoutParams 它说 "add to cast"

【问题讨论】:

    标签: android searchview layoutparams


    【解决方案1】:

    一开始你会遇到一个异常,因为如果你查看位于

    中的 search_view.xml

    \Android\android-sdk\platforms\android-18\data\res\layout\

    您会发现 SearchView 基本上是简单的 LinearLayout 将几个小部件合并在一起。这就是为什么你会得到类转换异常。而不是

    android.view.ViewGroup.LayoutParams params = searchview.getLayoutParams();
    

    使用

    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) searchview.getLayoutParams();
    

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

    import android.widget.LinearLayout.LayoutParams;
    
                          ...
    
    LayoutParams params = (LayoutParams) searchview.getLayoutParams();
    

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

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

    【讨论】:

      【解决方案2】:

      您是否尝试过这里描述的 XML 属性 android:maxWidth:http://developer.android.com/reference/android/widget/SearchView.html#attr_android:maxWidth

      我正在使用 actionbarsherlock 中的 SearchView 并使用相应的 java 方法将 SearchView 拉伸到操作栏的可用宽度。

      【讨论】:

      • searchView.setMaxWidth(findViewById(R.id.layout).getMeasuredWidth());
      【解决方案3】:


          <item
              android:id="@+id/action_search"
              android:icon="@drawable/search_b"
              android:orderInCategory="3"
              android:title="Search"
              app:showAsAction="always|collapseActionView"
              app:actionViewClass="android.support.v7.widget.SearchView" />
      
          <item
              android:id="@+id/action_scan"
              android:icon="@drawable/scan_b"
              android:title="Scan"
              android:orderInCategory="2"
              app:showAsAction="ifRoom|collapseActionView" />
      
          <item
              android:id="@+id/action_add_cusomer"
              android:icon="@drawable/add_cust_b"
              android:title="Add Customer"
              android:orderInCategory="1"
              app:showAsAction="ifRoom|collapseActionView" />
      
      </menu>
      
      After Clicking on Search icon:
      

      【讨论】:

        【解决方案4】:

        根据您的需要尝试此操作,但不要考虑使用您自己的按钮,您可以通过提供 wrap_content 宽度参数将默认 searchButton 移动到右侧,然后当您单击搜索时将宽度设置为 match_parent,然后在您关闭它时再次设置wrap_content 的宽度

        使用RelativeLayout 的searchView 子项并确保正确的LayoutParams(RelativeLayout.LayoutParams)

        <?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/counter_text_color" >
        
            <Button
                android:id="@+id/buttonLeftMenu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_centerInParent="true"
                android:background="@drawable/ic_drawer" />
        
            <ImageView
                android:id="@+id/iv_logo"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:background="@drawable/actionbar_logo" />
        
            <TextView
                android:id="@+id/tw_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:text="YOUR "
                android:textSize="24sp" />
        
            <SearchView
                android:id="@+id/searchView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_toLeftOf="@+id/buttonRightMenu" />
        
            <Button
                android:id="@+id/buttonRightMenu"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerInParent="true"
                android:background="@drawable/ic_action_settings" />
        
        </RelativeLayout>
        

        在你的课堂上

        searchView.setOnSearchClickListener(new OnClickListener() {
        
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                params.addRule(RelativeLayout.RIGHT_OF, R.id.buttonLeftMenu);
                params.addRule(RelativeLayout.LEFT_OF, R.id.buttonRightMenu);
                searchView.setLayoutParams(params);
        
            }
        });
        
        searchView.setOnCloseListener(new OnCloseListener() {
        
            @Override
            public boolean onClose() {
                // TODO Auto-generated method stub
                RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
                params.addRule(RelativeLayout.LEFT_OF, R.id.buttonRightMenu);
                searchView.setLayoutParams(params);
        
                return false;
            }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-12
          • 2014-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多