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(); } }

百星数据(60元/月,600元/年)日本/韩国/香港cn2 gia云服务器,2核2G/40G/5M带宽

百星数据(baixidc),2012年开始运作至今,主要提供境外自营云服务器和独立服务器出租业务,根据网络线路的不同划分为:美国cera 9929、美国cn2 gia、香港cn2 gia、韩国cn2 gia、日本cn2 gia等云服务器及物理服务器业务。目前,百星数据 推出的日本、韩国、香港cn2 gia云服务器,2核2G/40G/5M带宽低至60元/月,600元/年。百星数据优惠码:优惠码:30...

pacificrack7月美国便宜支持win VPS,$19.99/年,2G内存/1核/50gSSD/1T流量

pacificrack发布了7月最新vps优惠,新款促销便宜vps采用的是魔方管理,也就是PR-M系列。提一下有意思的是这次支持Windows server 2003、2008R2、2012R2、2016、2019、Windows 7、Windows 10,当然啦,常规Linux系统是必不可少的!1Gbps带宽、KVM虚拟、纯SSD raid10、自家QN机房洛杉矶数据中心...支持PayPal、...

华为云年中聚惠618活动,新用户专区,云服务器低至88元/年,3年仅580.98元,热销抢购中,最后2天!

华为云怎么样?华为云用在线的方式将华为30多年在ICT基础设施领域的技术积累和产品解决方案开放给客户,致力于提供稳定可靠、安全可信、可持续创新的云服务,做智能世界的“黑土地”,推进实现“用得起、用得好、用得放心”的普惠AI。华为云作为底座,为华为全栈全场景AI战略提供强大的算力平台和更易用的开发平台。本次年终聚惠618活动相当给力,1核2G内存1m云耀云服务器仅88元/年起,送主机安全基础版套餐,...

setbackgroundcolor为你推荐
距离查询如何查询公路里程accesspoint手机APN怎么设置accesspoint如何将电脑成为手机wifi的access point测量师测量员证与测量师证有什么不同测量师测量师考什么现在网现在网上有通过视频传病毒的,那是网站有毒还是播放器有毒还是视频有毒?封包是什么洛克王国封包是什么意思最好的电脑操作系统主流的电脑操作系统都有哪些?物联网公司排名求消防物联网公司排名?榜单出来了吗小时代发布会完整版《小时代3.0》签售发布会在哪举行?
企业虚拟主机 虚拟主机测评 3322动态域名注册 台湾服务器租用 免费申请网站域名 如何注册中文域名 免费申请网页 阿里云邮箱登陆首页 GGC 电影服务器 全球付 java主机 香港机房托管 轻量 股票老左 美国网站服务器 天翼云盘 33456 东莞服务器 台湾google 更多