繁体   English   中英

按下时如何突出显示图像按钮

[英]How to highlight the imagebutton when it is pressed

我希望我的imagebutton高亮显示自己,就像按下“正常”按钮时的正常发光效果一样。 因此,我尝试将图像放入其中,但是图像的背面有一个“灰场”,因此我将其设置为透明,以便仅显示图像,但发光效果消失了。 有针对这个的解决方法吗? :)

请以imgur图片为例- 此处示例图片

如果要“硬”,我可以忍受图像后面的灰色区域,但是是否可以使其具有相同的高光效果绿色?

我应该将代码放在MainActivity还是片段Java中? 片段Java

 public class FirstFragment extends Fragment { private View view ; public FirstFragment(){ } Button sendSMS; Button sendSMSaon; Button sendSMSaoff; Button sendSMSrela1; Button sendSMSrela2; EditText msgTxt; EditText aonTxt; EditText aoffTxt; EditText rela1txt; EditText rela2txt; Button taframnummer; TextView nyanumtxt; //TextView nya; //TextView nsp; TextView tstnr; @SuppressWarnings("ResourceType") @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.first_layout, container, false); return inflater.inflate(R.layout.first_layout, container, false); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { view = getActivity().findViewById(R.id.content_frame); nyanumtxt = (TextView) getActivity().findViewById(R.id.raderanumtxt); sendSMS = (Button)view.findViewById(R.id.skicka); sendSMSaon = (Button)view.findViewById(R.id.skickaaon); sendSMSaoff = (Button)view.findViewById(R.id.skickaaoff); sendSMSrela1 = (Button)view.findViewById(R.id.skickarela1); sendSMSrela2 = (Button)view.findViewById(R.id.skickarela2); msgTxt = (EditText)view.findViewById(R.id.Textmeddelande); aonTxt = (EditText)view.findViewById(R.id.aon); aoffTxt = (EditText)view.findViewById(R.id.aoff); rela1txt = (EditText)view.findViewById(R.id.rela1txt); rela2txt = (EditText)view.findViewById(R.id.relä2txt); taframnummer = (Button) view.findViewById(R.id.taframnummer); //nsp = (TextView) view.findViewById(R.id.nummertestsp); // tstnr = (TextView) view.findViewById(R.id.numretladd); // view = getActivity().findViewById(R.id.content_frame); taframnummer.setVisibility(INVISIBLE); msgTxt.setVisibility(INVISIBLE); aonTxt.setVisibility(INVISIBLE); aoffTxt.setVisibility(INVISIBLE); rela1txt.setVisibility(INVISIBLE); rela2txt.setVisibility(INVISIBLE); sendSMSaoff.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String mymsgaoff = aoffTxt.getText().toString(); String theNumberr = nyanumtxt.getText().toString(); sendMsg(theNumberr, mymsgaoff); } } ); sendSMSaon.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String mymsgaon = aonTxt.getText().toString(); String theNumberr = nyanumtxt.getText().toString(); sendMsg(theNumberr, mymsgaon); } } ); sendSMS.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String myMsg = msgTxt.getText().toString(); String theNumberr = nyanumtxt.getText().toString(); sendMsg(theNumberr, myMsg); } } ); sendSMSrela1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String myMsgrela1 = rela1txt.getText().toString(); String theNumberr = nyanumtxt.getText().toString(); sendMsg(theNumberr, myMsgrela1); } } ); sendSMSrela2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String mymsgrela2 = rela2txt.getText().toString(); String theNumberr = nyanumtxt.getText().toString(); sendMsg(theNumberr, mymsgrela2); } } ); // return view; } private void sendMsg(String theNumber, String myMsg) { SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(theNumber, null, myMsg, null, null); } } 
这是我的MainActivity
 public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { //TextView tstnr; TextView radertst; Button sendSMSaon; EditText aonTxt; //TextView nrladd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); // tstnr = (TextView) findViewById(R.id.nummertestsp); radertst = (TextView) findViewById(R.id.raderanumtxt); sendSMSaon = (Button)findViewById(R.id.skickaaon); aonTxt = (EditText)findViewById(R.id.aon); // nrladd = (TextView)findViewById(R.id.numretladd); } //This is where the call for the value in the setttings are. //Här är så att man kan lägga in values från inställningar till mainactivity. public void displayData(View view){ SharedPreferences prefs =PreferenceManager.getDefaultSharedPreferences(this); String name = prefs.getString("example_text", ""); radertst.setText(name + " "); } //downbelow is where the onresume so the value boots up with the app. //nedanför är för att appen ska ladda koden i settings direkt när man startar @Override protected void onResume() { super.onResume(); SharedPreferences prefs =PreferenceManager.getDefaultSharedPreferences(this); String name = prefs.getString("example_text", ""); radertst.setText(name + " ");} @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { Intent intent = new Intent(this, SettingsActivity.class); startActivity(intent); return true; } return super.onOptionsItemSelected(item); } @SuppressWarnings("StatementWithEmptyBody") @Override public boolean onNavigationItemSelected(MenuItem item) { // Handle navigation view item clicks here. int id = item.getItemId(); android.app.FragmentManager fragmentManager = getFragmentManager(); if (id == R.id.nav_first_layout) { fragmentManager.beginTransaction() .replace(R.id.content_frame , new FirstFragment()) .commit(); // Handle the camera action } else if (id == R.id.nav_second_layout) { fragmentManager.beginTransaction() .replace(R.id.content_frame , new SecondFragment()) .commit(); } else if (id == R.id.nav_third_layout) { fragmentManager.beginTransaction() .replace(R.id.content_frame , new ThirdFragment()) .commit(); } else if (id == R.id.nav_share) { Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://hellmertz.se")); startActivity(browserIntent); return true; } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } } 

将要突出显示的imageView放在色彩明亮的视图上方,并将视图的可见性设置为View.GONE。 现在使用您的ImageButton

((ImageButton)findViewById(R.id.myImageBtn)).setOnTouchListener(new OnTouchListener() {

  @Override
    public boolean onTouch(View v, MotionEvent event) {
      switch (event.getAction()) {
      case MotionEvent.ACTION_DOWN: {
          myView.setVisibility(View.VISIBLE);
          break;
      }
      case MotionEvent.ACTION_UP:
          myView.setVisibility(View.GONE);
          break;
          // Your action here on button click

      case MotionEvent.ACTION_CANCEL: {
          myView.setVisibility(View.GONE);
          break;
      }
      }
      return true;
    }
});

您可以使用用户选择器drawable,并且每种状态都有3个不同的按钮drawable。 创建这些文件为drawables文件夹,并将此行添加到按钮android:background =“ @ drawable / button_selector”

button_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- pressed -->
    <item android:drawable="@drawable/camera_button_hold" android:state_pressed="true"/>
    <!-- focused -->
    <item android:drawable="@drawable/camera_button_hold" android:state_focused="true"/>
    <!-- default -->
    <item android:drawable="@drawable/camera_button_normal"/>
</selector>

camera_button_hold.xml

<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
        <solid
            android:color="#673ab7"/>
    </shape>

camera_button_normal.xml

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke
        android:width="2dp"
        android:color="#673ab7"/>
</shape>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM