setbackgroundcolorjava中关于addActionListener的问题

setbackgroundcolor  时间:2021-08-26  阅读:()

如何设置actionbar让分割线改变颜色

android 布局 layout relativelayout   除了沉浸模式外,Android 4.4还有新的API,能使应用内的状态栏和虚拟按钮透明。

其他更多的Android 4.4 APIs可以看这里。

  如果要使应用内的状态栏和虚拟按钮变成透明有两种方法。

  一种是代码方式:   ?1   2   3Window window = getWindow();   window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);   window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);   另外一种是使用两个新的主题风格:   Theme.Holo.NoActionBar.TranslucentDecor和Theme.Holo.Light.NoActionBar.TranslucentDecor。

  但是这种方式只支持Android4.4以上系统,所以为了保持兼容性,我们还是采用代码方式比较好。

只需要先判断,如果是4.4以上系统才启用代码。

  开启后上下系统栏都透明了。

  但是如果应用本身是带有actionbar或者标题栏的话会就会变得比较尴尬,内容会在上面露出来。

这个时候需要在布局文件里加入android:fitsSystemWindows="true"。

  android:id="@+id/layout"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:background="#c8c8c8" >   android:id="@+id/iew"   android:layout_width="match_parent"   android:layout_height="match_parent" />   但是这样的话内容就不能从透明的虚拟按钮下穿过,没原来那么好看。

我们可以按照以前一样把根布局设置一个高度为系统栏高度和ActionBar高度的内边距就可以。

  同时关于获取ActionBar和状态栏的高度,发现用原来的方法有时候会获取的值为0。

自己google找了一下,找到两个前辈提供的获取高度方法,获取ActionBar高度,获取状态栏高度。

  8if (android.os.Build.VERSION.SDK_INT > 18) {   Window window = getWindow();   window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);   window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);   //设置根布局的内边距   RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.layout);   relativeLayout.setPadding(0, getActionBarHeight()+getStatusBarHeight(), 0, 0);   }   27// 获取手机状态栏高度   public int getStatusBarHeight() {   Class c = null;   Object obj = null;   Field field = null;   int x = 0, statusBarHeight = 0;   try {   c = Class.forName(.android.internal.R$dimen");   obj = c.newInstance();   field = c.getField("status_bar_height");   x = Integer.parseInt(field.get(obj).toString());   statusBarHeight = getResources().getDimensionPixelSize(x);   } catch (Exception e1) {   e1.printStackTrace();   }   return statusBarHeight;   }   // 获取ActionBar的高度   public int getActionBarHeight() {    = new TypedValue();   int actionBarHeight = 0;   if (getTheme().resolveAttribute(android.R.attr.actionBarSize,, true))// 如果资源是存在的、有效的   {   actionBarHeight = .data, getResources().getDisplayMetrics());   }   return actionBarHeight;   }   接下来,因为我自己写的一些应用是暗色的主题的,会导致透明的状态栏和ActionBar颜色不太协调。

看到有一些应用是把状态栏的颜色设置成和ActionBar一样,这种解决方法也不错。

  具体是怎么实现的也不太清楚,我自己猜测写了一个差不多状态栏。

我是直接在根视图加入一个高度为状态栏高度的TextView,背景设置为和ActionBar一样。

具体代码如下:   8// 创建TextView   TextView textView = new TextView(this);   LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, getStatusBarHeight());   textView.setBackgroundColor(Color.parseColor("#3F9FE0"));   textView.setLayoutParams(lParams);   // 获得根视图并把TextView加进去。

  ViewGroup view = (ViewGroup) getWindow().getDecorView();   view.addView(textView);   在模拟器上看还行,但是在实际的手机当中总感觉ActionBar有点过大,所以我在背景色里加入了一些渐变,在实体手机中就比较好看一点,不会觉得ActionBar太宽了。

  android:startColor="#c8c8c8"   android:endColor="#3F9FE0"   android:angle="270"   android:type="linear"/>

JFrame的形状

这个是能改变的 给你一个实例代码 import java.awt.*; import java.awt.geom.*;//注意此包加载 import javax.swing.*; /** * 制作一个圆形按钮时,需要做两件事: * 第一件事是重载一个适合的绘图方法以画出一个图形 * 第二件事是设置一些事件使得只有当单击图形按钮的范围中的时候才会做出响应*/ public class CircleButton extends JButton{ public CircleButton(String label){ super(label); Dimension size=getPreferredSize();//获取按钮的最佳大小 //调整按钮的大小,使之变成一个方形 size.width=size.height=Math.max(size.width,size.height); setPreferredSize(size); //使jbutton不画背景,即不显示方形背景,而允许我们画一个圆的背景 setContentAreaFilled(false); } //画图的按钮的背景和标签 protected void paintComponent(Graphics g){ if(getModel().isArmed()){ //getModel方法返回鼠标的模型ButtonModel //如果鼠标按下按钮,则buttonModel的armed属性为真 g.setColor(Color.LIGHT_GRAY); }else{ //其他事件用默认的背景色显示按钮 g.setColor(getBackground()); } //fillOval方法画一个矩形的内切椭圆,并且填充这个椭圆 //当矩形为正方形时,画出的椭圆便是圆 g.fillOval(0,0,getSize().width-1,getSize().height-1); //调用父类的paintComponent画按钮的标签和焦点所在的小矩形 super.paintComponents(g); } //用简单的弧充当按钮的边界 protected void paintBorder(Graphics g){ g.setColor(getForeground()); //drawOval方法画矩形的内切椭圆,但不填充,只画出一个边界 g.drawOval(0,0,getSize().width-1,getSize().height-1); } Shape shape;//用于保存按钮的形状,有助于侦听单击按钮事件 //判断鼠标是否点在按钮上 public boolean contains(int x,int y){ //如果按钮边框,位置发生改变,则产生一个新的形状对象 if((shape==null)||(!shape.getBounds().equals(getBounds()))){ //构造椭圆型对象 shape=new Ellipse2D.Float(0,0,getWidth(),getHeight()); } //判断鼠标的x,y坐标是否落在按钮形状内 return shape.contains(x,y); } public static void main(String[] args){ JButton button=new CircleButton("Click me");//产生一个圆形按钮 button.setBackground(Color.green);//设置背景色为绿色 //产生一个框架显示这个按钮 JFrame frame=new JFrame("图形按钮"); frame.getContentPane().setBackground(Color.yellow); frame.getContentPane().setLayout(new FlowLayout()); frame.getContentPane().add(but

Android开发中,为什么TextView.setBackgroundColor(R.color.all_white);没有效果?谢谢!

试下这个. lassMyTextViewextends Activity { private TextView mTextView;//声明TextView对象 /** Called when the activity is first created. */ @Override publicvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView = (TextView)findViewById();//取得TextView对象 mTextView.setText("我的第一个文本");//设置TextView显示的内容 mTextView.setTextColor(Color.GREEN);//设置TextView的颜色 mTextView.setBackgroundColor(Color.WHITE);//设置TextView的背景色 } }

怎样自定义TabView

你可以参照着下面的代码自己修改一下就好了:for(int i=0;i<tabHost.getTabWidget().getChildCount();i++) { tabHost.setOnTabChangedListener(new OnTabChangeListener(){ @Override public void onTabChanged(String tabId) { // TODO Auto-generated method stub for(int i=0;i<tabHost.getTabWidget().getChildCount();i++) { tabHost.getTabWidget().getChildAt(i).setBackgroundColor(R.color.transparent); //unselected } tabHost.getTabWidget().getChildAt(tabHost.getCurrentTab()).setBackgroundColor(Color.parseColor("#000011")); // selected }

怎样设置TfrxCrossView的颜色

晕,你怎么能直接在子线程内更新ui啊,应该用handler来更新控件,代码给你改一下了 Runnable begin = new Runnable(){ @Override public void run(){ try{ Thread.sleep(2000); Message msg = new Message(); msg.what = 100; this.mHandler.sendMessage(msg); } catch(InterruptedException e){} } }; private Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case 100: 1.setBackgroundColor(Color.RED); break; } };

java中关于addActionListener的问题

这里的this 指的是你的方法或成员或操作火灾的这个类,this在这里的作用是说明,你必须在该类里面来实现ActionListener里面的actionPerformed方法,其实btnUp.addActionListener(Object t);这里的参数的意思是,这个t是哪个类的对象,那么那个类就负责来实现接口的方法,不知道你理解了没有。

import java.awt.*; import java.awt.event.*; public class Bnbn //implements ActionListener { Frame frmFrame; Button btnUp, btnDown; public Bnbn() { frmFrame = new Frame("按钮应用"); frmFrame.setLayout(new GridLayout(2,1)); ss s=new ss();//产生内部类对象作监视器 //产生按钮一 btnUp = new Button("上"); btnUp.setActionCommand("btnUp"); btnUp.addActionListener(s); //产生按钮二 btnDown = new Button("下"); btnDown.setActionCommand("btnDown"); btnDown.addActionListener(s); frmFrame.add(btnUp); frmFrame.add(btnDown); frmFrame.pack(); frmFrame.setVisible(true); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } class ss implements ActionListener //创建内部类作监视器 { public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if ( cmd.equals("btnDown") ) { if (btnUp.getBackground()==Color.BLUE) { btnUp.setBackground(Color.red); } else { btnUp.setBackground(Color.blue); } } else { if (btnDown.getBackground()==Color.BLUE) { btnDown.setBackground(Color.red); } else { btnDown.setBackground(Color.blue); } } } } public static void main(String[] args) { new Bnbn(); } }

华纳云-618大促3折起,18元/月买CN2 GIA 2M 香港云,物理机高防同享,10M带宽独享三网直连,无限流量!

官方网站:点击访问华纳云活动官网活动方案:一、香港云服务器此次推出八种配置的香港云服务器,满足不同行业不同业务规模的客户需求,同时每种配置的云服务都有不同的带宽选择,灵活性更高,可用性更强,性价比更优质。配置带宽月付6折季付5.5折半年付5折年付4.5折2年付4折3年付3折购买1H1G2M/99180324576648直达购买5M/17331556710081134直达购买2H2G2M892444...

易探云香港vps主机价格多少钱?香港云服务器主机租用价格

易探云香港vps主机价格多少钱?香港vps主机租用费用大体上是由配置决定的,我们选择香港vps主机租用最大的优势是免备案vps。但是,每家服务商的机房、配置、定价也不同。我们以最基础配置为标准,综合比对各大香港vps主机供应商的价格,即可选到高性能、价格适中的香港vps主机。通常1核CPU、1G内存、2Mbps独享带宽,价格在30元-120元/月。不过,易探云香港vps主机推出四个机房的优惠活动,...

亚洲云Asiayu,成都云服务器 4核4G 30M 120元一月

点击进入亚云官方网站(www.asiayun.com)公司名:上海玥悠悠云计算有限公司成都铂金宿主机IO测试图亚洲云Asiayun怎么样?亚洲云Asiayun好不好?亚云由亚云团队运营,拥有ICP/ISP/IDC/CDN等资质,亚云团队成立于2018年,经过多次品牌升级。主要销售主VPS服务器,提供云服务器和物理服务器,机房有成都、美国CERA、中国香港安畅和电信,香港提供CN2 GIA线路,CE...

setbackgroundcolor为你推荐
数据库原理数据库原理这门课学的是什么,有什么作用?营业成本包括利润表中的“营业成本”项目包括。互联网接入计算机接入因特网的方式有哪几种数字通信原理数字通信要怎么学制作证书怎么做证书?封包是什么洛克王国封包是什么意思上海网络维护公司上海嘉定网络公司 做监控的和综合布线的有那几家什么是无线上网什么是宽带?什么是无线上网?什么是网线?wps表格数据恢复WPS工作表意外关闭如何恢复mysql数据库迁移如何将MySQL数据库迁移到Oracle数据库
韩国vps俄罗斯美女 naning9韩国官网 mobaxterm 网站保姆 lighttpd ev证书 镇江联通宽带 网盘申请 英文站群 创梦 nerds 东莞数据中心 免费全能主机 重庆双线服务器托管 安徽双线服务器 杭州电信宽带优惠 香港打折信息 电信测速器在线测网速 留言板 赵荣 更多