如何设置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(butAndroid开发中,为什么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();
}
}
傲游主机怎么样?傲游主机是一家成立于2010年的老牌国外VPS服务商,在澳大利亚及美国均注册公司,是由在澳洲留学的害羞哥、主机论坛知名版主组长等大佬创建,拥有多家海外直连线路机房资源,提供基于VPS主机和独立服务器租用等,其中VPS基于KVM或者XEN架构,可选机房包括中国香港、美国洛杉矶、韩国、日本、德国、荷兰等,均为CN2或者国内直连优秀线路。傲游主机提供8折优惠码:haixiuge,适用于全...
昔日数据怎么样?昔日数据是一个来自国内服务器销售商,成立于2020年底,主要销售国内海外云服务器,目前有国内湖北十堰云服务器和香港hkbn云服务器 采用KVM虚拟化技术构架,湖北十堰机房10M带宽月付19元起;香港HKBN,月付12元起; 此次夏日活动全部首月5折促销,有需要的可以关注一下。点击进入:昔日数据官方网站地址昔日数据优惠码:优惠码: XR2021 全场通用(活动持续半个月 2021/7...
justhost.ru官方来消息说已经对网络进行了比较全面的优化,针对中国电信、联通、移动来说,4个机房总有一个适合中国用户,让站长进行一下测试,这不就有了这篇有关justhost的VPS的第四次测评。本帖主要关注的是网络,对于其他的参数一概不管! 官方网站:https://justhost.ru 最低配VPS:8.3元/月,KVM,512M内存,5G硬盘,200M带宽,不限流量 购买链接:...
setbackgroundcolor为你推荐
数字通信原理数字通信要怎么学网络地址分类IP地址是怎样分类的?注册电子邮件怎样注册电子邮箱混乱模式植物大战僵尸中怎么用混乱模式开启隐藏关?特别是隐藏小游戏.听说要改什么文件名,但是怎么改?改后怎么进...化学键理论关于化学键的知识价格咨询米兰心理张桂茹价格: 咨询一次的费用是多少价格咨询造价咨询公司一个月能接多少工程做啊微看为什么我的抖音上传视频了,没有极快极慢这种的设置,只有下一步这种了?别说卸载了再下一个我试了没用封包是什么洛克王国封包是什么意思解码器有什么用监控解码器是指什么?
海外主机租用 ion godaddy续费优惠码 evssl 青果网 免费博客空间 嘟牛 微信收钱 qq对话框 1美金 新世界服务器 dnspod 大化网 闪讯网 hdchina 防盗链 alexa搜 ubuntu安装教程 ftp是什么东西 easypanel 更多