如何在键盘处于活动状态时使工具栏透明
How to make the toolbar transparent when the keyboard is active
当我点击编辑文本和键盘显示时,但工具栏变成白色..!!我想让它变得透明并在其下方显示徽标..!?
这是我尝试过的方法,但到目前为止还没有用..
我将工具栏的背景颜色设置为白色名称"transparent",不透明度= 0
mToolbar.setBackgroundColor(getResources().getColor(R.color.transparent));
从 xml 尝试过,但也没有用..
My Problem, see the screenshot
用这个替换上一行,它会导致空指针异常
mToolbar.getBackground().setAlpha(0);
这是错误,它没有任何意义,因为有一个参考,如果我为工具栏设置任何 属性.. 没有错误显示..!?只是导致这种情况的 Alpha。!
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
有什么方法可以在键盘显示时隐藏工具栏..!?试过但不知道怎么做..!?
代码
基础Activity
public class BaseActivity extends AppCompatActivity {
public Toolbar mToolbar;
protected String title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
Toolbar(mToolbar);
}
public void Toolbar(Toolbar toolbar) {
toolbar.setTitle(this.title);
setSupportActionBar(toolbar);
}
我的登录 Activity 扩展基础Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_login);
this.title = getString(R.string.action_sign_in);
/* causes a crash */ this.mToolbar.getBackground().setAlpha((int)(0.01) * 255);
super.onCreate(savedInstanceState);
// other code ....
}
您可以使用下面的浮动比例使工具栏透明。
mToolbar.getBackground().setAlpha((int)(myFloatValue) * 255);
从Activity
开始,如果你使用AppCompatActivity
,你可以这样设置Toolbar
背景-
Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mToolbar.setBackgroundColor(ContextCompat.getColor(this,android.R.color.transparent));
这在我的项目中非常有效。
来自 xml
,
你可以这样设置你的工具栏背景
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/colorPrimary"/>
这两种方法在我的项目中效果很好。我认为它也适用于您的情况。
使用 getSupportActionBar().setBackgroundDrawable()
代替 mToolbar.setBackgroundColor()
和 mToolbar.getBackground().setAlpha()
试试这个:
..........
.....................
// Change color
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources()
.getColor(R.color.transparent)));
..............
........................
您还可以使用:
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xffFF0000)); // RED color
或
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FF0000"))); // RED color
当我点击编辑文本和键盘显示时,但工具栏变成白色..!!我想让它变得透明并在其下方显示徽标..!?
这是我尝试过的方法,但到目前为止还没有用..
我将工具栏的背景颜色设置为白色名称"transparent",不透明度= 0
mToolbar.setBackgroundColor(getResources().getColor(R.color.transparent));
从 xml 尝试过,但也没有用..
My Problem, see the screenshot
用这个替换上一行,它会导致空指针异常
mToolbar.getBackground().setAlpha(0);
这是错误,它没有任何意义,因为有一个参考,如果我为工具栏设置任何 属性.. 没有错误显示..!?只是导致这种情况的 Alpha。!
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setAlpha(int)' on a null object reference
有什么方法可以在键盘显示时隐藏工具栏..!?试过但不知道怎么做..!?
代码
基础Activity
public class BaseActivity extends AppCompatActivity {
public Toolbar mToolbar;
protected String title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
Toolbar(mToolbar);
}
public void Toolbar(Toolbar toolbar) {
toolbar.setTitle(this.title);
setSupportActionBar(toolbar);
}
我的登录 Activity 扩展基础Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_login);
this.title = getString(R.string.action_sign_in);
/* causes a crash */ this.mToolbar.getBackground().setAlpha((int)(0.01) * 255);
super.onCreate(savedInstanceState);
// other code ....
}
您可以使用下面的浮动比例使工具栏透明。
mToolbar.getBackground().setAlpha((int)(myFloatValue) * 255);
从Activity
开始,如果你使用AppCompatActivity
,你可以这样设置Toolbar
背景-
Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mToolbar.setBackgroundColor(ContextCompat.getColor(this,android.R.color.transparent));
这在我的项目中非常有效。
来自 xml
,
你可以这样设置你的工具栏背景
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:background="@color/colorPrimary"/>
这两种方法在我的项目中效果很好。我认为它也适用于您的情况。
使用 getSupportActionBar().setBackgroundDrawable()
代替 mToolbar.setBackgroundColor()
和 mToolbar.getBackground().setAlpha()
试试这个:
..........
.....................
// Change color
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources()
.getColor(R.color.transparent)));
..............
........................
您还可以使用:
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xffFF0000)); // RED color
或
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#FF0000"))); // RED color