如何在键盘处于活动状态时使工具栏透明

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