android 按鈕帶圖標 陰影_android中帶圖標的按鈕(ImageButton)怎么用

展開全部

除了Android系統自帶的Button按鈕以外,還提供了帶圖標的按鈕ImageButton

要制作帶圖標的按鈕,首先要在布局62616964757a686964616fe58685e5aeb931333337613163文件中定義ImageButton,然后通過setImageDrawable方法來設置要顯示的圖標。

注意:

我們可以在布局文件中就直接設置按鈕的圖標,如

android:src=”@drawable/icon1″

我們也可以在程序中設置自定義圖標

imgbtn3.setImageDrawable(getResources().getDrawable(R.drawable.icon2));

我們還可以使用系統自帶的圖標

imgbtn4.setImageDrawable(getResources().getDrawable(android.R.drawable.sym_call_incoming));

設置完按鈕的圖標后,需要為按鈕設置監聽setOnClickListener,以此捕獲事件并處理

下面的例子講述的是由4個圖標按鈕組成的布局,其中三個按鈕的圖標是自定義的,第四個按鈕的圖標是系統的,當點擊按鈕1的時候,彈出dialog,當點擊按鈕2的時候,點擊確定后,可以將按鈕2的圖標變成按鈕3的圖標,當點擊按鈕3的時候,按鈕3的圖標變成了系統打電話的圖標,點擊按鈕4,顯示一個提示dialog

ImageButtonTest.java源代碼

package org.loulijun.imagebutton;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.Dialog;

import android.content.DialogInterface;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.ImageButton;

import android.widget.TextView;

public class ImageButtonTest extends Activity {

/** Called when the activity is first created. */

TextView textview;

ImageButton imgbtn1;

ImageButton imgbtn2;

ImageButton imgbtn3;

ImageButton imgbtn4;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

textview=(TextView)findViewById(R.id.textview);

//分別取得4個ImageButton對象

imgbtn1=(ImageButton)findViewById(R.id.imagebutton1);

imgbtn2=(ImageButton)findViewById(R.id.imagebutton2);

imgbtn3=(ImageButton)findViewById(R.id.imagebutton3);

imgbtn4=(ImageButton)findViewById(R.id.imagebutton4);

//分別為ImageButton設置圖標

//imgbtn1已經在main.xml布局中設置了圖標,所以就不在這里設置了(設置圖標即可在程序中設置,也可在布局文件中設置)

imgbtn2.setImageDrawable(getResources().getDrawable(R.drawable.icon));//在程序中設置圖標

imgbtn3.setImageDrawable(getResources().getDrawable(R.drawable.icon2));

imgbtn4.setImageDrawable(getResources().getDrawable(android.R.drawable.sym_call_incoming));//設置系統圖標

//下面為各個按鈕設置事件監聽

imgbtn1.setOnClickListener(new Button.OnClickListener()

{

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Dialog dialog=new AlertDialog.Builder(ImageButtonTest.this)

.setTitle("提示")

.setMessage("我是ImageButton1")

.setPositiveButton("確定",new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

//相應的處理操作

}

}).create();

dialog.show();

}

});

imgbtn2.setOnClickListener(new Button.OnClickListener()

{

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Dialog dialog=new AlertDialog.Builder(ImageButtonTest.this)

.setTitle("提示")

.setMessage("我是ImageButton2,我要使用ImageButton3的圖標")

.setPositiveButton("確定",new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

imgbtn2.setImageDrawable(getResources().getDrawable(R.drawable.icon2));

}

}).create();

dialog.show();

}

});

imgbtn3.setOnClickListener(new Button.OnClickListener()

{

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Dialog dialog=new AlertDialog.Builder(ImageButtonTest.this)

.setTitle("提示")

.setMessage("我是ImageButton3,我想使用系統打電話的圖標")

.setPositiveButton("確定",new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

imgbtn3.setImageDrawable(getResources().getDrawable(android.R.drawable.sym_action_call));

}

}).create();

dialog.show();

}

});

imgbtn4.setOnClickListener(new Button.OnClickListener()

{

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

Dialog dialog=new AlertDialog.Builder(ImageButtonTest.this)

.setTitle("提示")

.setMessage("我是使用的系統圖標")

.setPositiveButton("確定",new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

//相應的處理操作

}

}).create();

dialog.show();

}

});

}

}

布局文件main.xml

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:id="@+id/textview"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="ImageButton測試案例"

/>

android:id="@+id/imagebutton1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/icon1"

/>

android:id="@+id/imagebutton2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

android:id="@+id/imagebutton3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

android:id="@+id/imagebutton4"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

已贊過

已踩過<

你對這個回答的評價是?

評論

收起

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537111.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537111.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537111.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Zookeeper基礎常用操作以及ACL權限

這次將Zookeeper的一些基礎用法以及權限這塊的都補充一下在這篇博客中。 上篇博客介紹了基于ZooKeeper實現的分布式鎖&#xff0c;也介紹了一些ZooKeeper的節點類型以及監聽機制&#xff0c;今天這里就不作過多的介紹了&#xff0c;大家也可以自行的去官方文檔上看看更具體的介…

[中醫經絡學習一]足陽明胃經

人體有六臟&#xff08;心、肝、脾、肺、腎五臟&#xff0c;再加心包&#xff09;六腑&#xff08;胃、小腸、大腸、膀胱、膽、三焦&#xff09;&#xff0c;每個臟腑都聯接著一條經絡&#xff0c;一共12條經絡&#xff0c;稱“十二正經”&#xff0c;經絡的走向在四肢兩側基本…

ThreadLocal原理解析以及是否需要調用remove方法

平常的開發過程中&#xff0c;如果有個類不是線程安全的&#xff0c;比如SimpleDateFormat&#xff0c;要使這個類在并發的過程中是線程安全的&#xff0c;那么可以將變量設置位局部變量&#xff0c;不過存在的問題就是頻繁的創建對象&#xff0c;對性能和資源會有一定降低和消…

Maven基礎及概念

前言 今天就來聊聊Maven的基礎和一些比較概念性的東西&#xff0c;還有一些常用的Maven命令啥的&#xff0c;主要是某人腦子記不住&#xff0c;記在博客中讓她自己看吧&#xff0c;省的費心給她找。 后續的文章會聊到Maven的一些比較高級用法&#xff0c;像自定義插件&#x…

織夢縮略圖自動補齊絕對路徑_織夢生成文章內容縮略圖時自動加上域名絕對路徑...

今天又接了個織夢CMS的有償服務,客戶想要后臺添加文章內容的時候,縮略圖自動變成帶上絕對路徑的格式.比如我們默認的縮略圖是這樣的 /uploads/allimg/150814/123P2NB-0-lp.png 他想要的效果是這樣的 http://www.youwujun.com.cn/uploads/allimg/150814/123P2NB-0-lp.png大家懂我…

BUAA 436 孟竹的復習計劃(二維樹狀數組)

題目鏈接&#xff1a;http://acm.buaa.edu.cn/problem/436/ 題意&#xff1a;一個數列兩種操作&#xff1a;&#xff08;1&#xff09;將某個位置的數字改成另一個數字&#xff1b;&#xff08;2&#xff09;交換兩個位置的數字。每次操作之后輸出逆序數的個數。 思路&#xff…

Maven之pom.xml常用標簽解析及鏡像配置

前言 Maven僅僅是個打包工具而已&#xff0c;個人覺得沒有太大必要花費在打包工具上&#xff0c;這里就列舉一下個人覺得會常用標簽的使用就好了&#xff0c;原理啥的基本就不太會去深度了解了&#xff0c;如果以后遇到需了解Maven工作原理的工作的話&#xff0c;到時候一定分…

idea 導入svn代碼_idea導入svn項目

起初和導入git項目一樣&#xff0c;file - new - project from version control - &#xff0c;這后面選 subversion。在打開的 checkout from subversion對話框中&#xff0c;輸入svn地址&#xff0c;比如 svn://11.22.33.44/demo。添加一個后&#xff0c;展開新加項&#xff…

由mysql8降級到mysql5

最近在研究liferay的使用。liferay可以連接mysql數據庫。電腦中裝的mysql的最新版本是mysql8。于是開始按照liferay的要求進行連接。但是多番嘗試后&#xff0c;均報錯&#xff1a;java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast …

tf計算矩陣維度_tensorflow中關于 多維tensor的運算(tf.multiply, tf.matmul, tf.tensordot)...

multiply 等同與* &#xff0c;用于計算矩陣之間的element-wise 乘法&#xff0c;要求矩陣的形狀必須一致(或者是其中一個維度為1)&#xff0c;否則會報錯&#xff1a;import tensorflow as tfa tf.constant([1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11,12], shape[2, 3, 2])b tf.con…

Maven高級之插件開發

前言 終于來到了Maven的插件開發&#xff0c;其實Maven的插件并沒有想象的那么難&#xff0c;剛開始講Maven基礎的時候就演示了一下JDK是如何打包的&#xff0c;Maven打包只是在JDK打包上封裝了一層而已&#xff0c;Maven也支持自定義插件開發 創建 我們先使用quickstart原型…

HTTP1.1新增了五種請求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 、 CONNECT

200 &#xff08;成功&#xff09; 服務器已成功處理了請求。 通常&#xff0c;這表示服務器提供了請求的網頁。 201 &#xff08;已創建&#xff09; 請求成功并且服務器創建了新的資源。 202 &#xff08;已接受&#xff09; 服務器已接受請求&#xff0c;但尚未處…

katalon進行app測試_Katalon API 測試 Demo

為何選擇Katalon符合我們當下的情況&#xff0c;測試需要借助現有工具提高測試效率以及提高測試質量&#xff1b;為何不自己寫代碼&#xff1f;不是只有自己寫的框架才是最好的&#xff0c;合適的才是最好的&#xff1b;katalon 支持ui、mobile、api 同時也支持腳本模式&#x…

Maven高級之archetype(原型/骨架)開發

前言 archetype這個的主要功能就是將寫好的項目模塊打包成一個原型&#xff0c;然后提供給其他人使用&#xff0c;這樣別人就可以快速使用這個項目模板了。 這個東西雖然很多人都基本用不上&#xff0c;但原型這個東西用的好還是很方便的&#xff0c;能夠在開發新項目上省去大…

深度學習在搜索業務中的探索與實踐

本文根據美團高級技術專家翟藝濤在2018 QCon全球軟件開發大會上的演講內容整理而成&#xff0c;內容有修改。引言 2018年12月31日&#xff0c;美團酒店單日入住間夜突破200萬&#xff0c;再次創下行業的新紀錄&#xff0c;而酒店搜索在其中起到了非常重要的作用。本文會首先介紹…

cesium面積計算_cesium-長度測量和面積測量

(更新)多謝網友的提醒&#xff0c;面積測量的小問題已經修改&#xff0c;經測試可正常使用網上找的大神的實現方法有點問題&#xff0c;實現有一些bug&#xff0c;作為cesium新手一個&#xff0c;棄之不忍&#xff0c;只好硬著頭皮修改了&#xff0c;不過還好問題不大&#xff…

SpringBoot自動配置原理流程

前言 新公司太忙了&#xff0c;都沒啥空更新博客&#xff0c;就隨便記錄一下以前的學習筆記吧。SpringBoot是基于Spring上的衍生框架&#xff0c;只要看懂了Spring的話&#xff0c;學這個就比較簡單了&#xff1b;SpringBoot也是在當前微服務時代下流行的框架&#xff0c;并且…

算法:對象方式數組去重

var arr [3, 1, 1, 4 , 2 , 4 , 2 , 4 , 2, 1, 1, 3, 3, 3];var ary[];var obj{};for(var i0;i<arr.length;i){var curarr[i];if(!obj[cur]){obj[cur]cur;ary.push(cur);}}console.log(ary); 復制代碼

python實現路由功能_python 實現重啟路由器

有一些服務&#xff0c;需要動態IP&#xff0c;所以我們用重啟路由器的方法實現。人工重啟不可選&#xff0c;用定時腳本執行即可。貼代碼&#xff0c;每種路由器&#xff0c;提示不一樣。需要路由器有telnet功能才行。#!/usr/bin/env python# -*- coding: utf-8 -*-import tel…

SpringBoot自定義Starter(自動配置類)

前言 SpringBoot其實從誕生以來圍繞的核心就是快速構建項目&#xff0c;快速構建的前提是有人幫你做好輪子&#xff0c;開發者只要拿來即用就好了&#xff0c;而造好輪子的人就是SpringBoot的開發者&#xff0c;引入自動配置的形式幫助開發者快速創建項目&#xff0c;而自動配…