改变系统自带的SearchView的提交按钮图片
转载请注明出处 http://my.csdn.net/my/mycsdn
今天在学习searchview控件的时候想把提交的箭头换掉,在网上找了好多东西试试没什么用(可能是我没用好)。什么通过反射之类的。最后用了一个最简单的方法。没有什么太深的原理。不多说上代码。
第一部,点击SearchView 进入该类 找到其中的提交按钮控件ID
我导的是V7的包,不同的包可能不一样。下面就是SearchView的提交按钮
// Set up icons and backgrounds. mSearchPlate.setBackgroundDrawable(a.getDrawable(R.styleable.SearchView_queryBackground)); mSubmitArea.setBackgroundDrawable(a.getDrawable(R.styleable.SearchView_submitBackground)); mSearchButton.setImageDrawable(a.getDrawable(R.styleable.SearchView_searchIcon)); mGoButton.setImageDrawable(a.getDrawable(R.styleable.SearchView_goIcon)); mCloseButton.setImageDrawable(a.getDrawable(R.styleable.SearchView_closeIcon)); mVoiceButton.setImageDrawable(a.getDrawable(R.styleable.SearchView_voiceIcon)); mCollapsedIcon.setImageDrawable(a.getDrawable(R.styleable.SearchView_searchIcon));顾名思义。下面的这个就是
mGoButton.setImageDrawable(a.getDrawable(R.styleable.SearchView_goIcon));第二部----在Activity设置
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.SearchView; import android.widget.ImageView; import android.widget.RelativeLayout; import com.example.burning.testdemo.R; import java.lang.reflect.Field; public class Main3Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); SearchView sv = (SearchView) this.findViewById(R.id.sv); //设置显示提交按钮 sv.setSubmitButtonEnabled(true); //拿到提交图标的imageview, ImageView iv_submit = (ImageView) sv.findViewById(R.id.search_go_btn); //这样就可以修改图片了 iv_submit.setImageResource(R.mipmap.ic_launcher); } }
OK 小功告成。是不是很简单