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

Hostodo,美国独立日特价优惠,四款特价VPS云服务器7折,KVM虚拟架构,NVMe阵列,1核512M内存1Gbps带宽3T月流量,13.99美元/月,赠送DirectAdmin授权

Hostodo近日发布了美国独立日优惠促销活动,主要推送了四款特价优惠便宜的VPS云服务器产品,基于KVM虚拟架构,NVMe阵列,1Gbps带宽,默认分配一个IPv4+/64 IPv6,采用solusvm管理,赠送收费版DirectAdmin授权,服务有效期内均有效,大致约为7折优惠,独立日活动时间不定,活动机型售罄为止,有需要的朋友可以尝试一下。Hostodo怎么样?Hostodo服务器好不好?...

Contabo美国独立日促销,独立服7月€3.99/月

Contabo自4月份在新加坡增设数据中心以后,这才短短的过去不到3个月,现在同时新增了美国纽约和西雅图数据中心。可见Contabo加速了全球布局,目前可选的数据中心包括:德国本土、美国东部(纽约)、美国西部(西雅图)、美国中部(圣路易斯)和亚洲的新加坡数据中心。为了庆祝美国独立日和新增数据中心,自7月4日开始,购买美国地区的VPS、VDS和独立服务器均免设置费。Contabo是德国的老牌服务商,...

蓝速数据(58/年)秒杀服务器独立1核2G 1M

蓝速数据金秋上云季2G58/年怎么样?蓝速数据物理机拼团0元购劲爆?蓝速数据服务器秒杀爆产品好不好?蓝速数据是广州五联科技信息有限公司旗下品牌云计算平台、采用国内首选Zkeys公有云建设多种开通方式、具有IDC、ISP从业资格证IDC运营商新老用户值得信赖的商家。我司主要从事内地的枣庄、宿迁、深圳、绍兴、成都(市、县)。待开放地区:北京、广州、十堰、西安、镇江(市、县)。等地区数据中心业务,均KV...

setbackgroundcolor为你推荐
临时文件Office自己保存的临时文件在什么位置怎么发邮件怎样发送邮件?网络的好处网络的好处作文组或资源的状态不是执行请求操作的正确状态在输入netsh wlan start hostednetwork时,显示无法启动承载网络,组或资源的状态不是执行操作的正确状态组或资源的状态不是执行请求操作的正确状态无法启动承载网络,组或资源状态下不是执行请求操作的正确状态!测量师测量员证与测量师证有什么不同测量师英国皇家特许测量师在中国有用吗色空间求图像处理中颜色空间的介绍,越详细越好封包是什么这个七月半封包怎么填封包是什么灰指甲封包治疗是什么,真的管用吗?
论坛虚拟主机 php空间租用 北京vps 看国外视频直播vps 草根过期域名 buyvm 瓦工 68.168.16.150 光棍节日志 ev证书 铁通流量查询 web服务器的架设 美国网站服务器 东莞服务器 丽萨 石家庄服务器托管 贵阳电信测速 空间服务器 测试网速命令 攻击服务器 更多