自定义dialog怎样隐藏actionbar

 我来答
缘Lai如茨
2016-05-25 · TA获得超过8631个赞
知道大有可为答主
回答量:7534
采纳率:92%
帮助的人:579万
展开全部
当 RecyclerView 向上滑动 ActionBar 显示,向下滑动 ActionBar 隐藏,并且是随着滑动的距离来控制ActionBar 的移动距离。
代码非常之简单
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int transY = (int) (mActionBarView.getTranslationY() - dy);
//控制 ActionBar 的移动距离不能超过边界
transY = (int) clamp(transY,-mActionBarHeight,0);
mActionBarView.setTranslationY(transY);

}

但松手之后,还有一个动画需要处理,如果 ActionBar 的显示高度大于 ActionBar 高度的一半,则让它做全部显示动画,反之,则做隐藏动画。
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == RecyclerView.SCROLL_STATE_IDLE){
checkAnimation() ;
}
}
private void checkAnimation(){
int transY = (int)mActionBarView.getTranslationY();

if (transY != 0|| transY != -mActionBarHeight){
startAnimation() ;
}
}

private void startAnimation(){
float [] value = new float[2] ;
value[0] = mActionBarView.getTranslationY();
if (value[0] > -mActionBarHeight/2.0f){
value[1] = 0 ;
}else {
value[1] = - mActionBarHeight ;
}
ObjectAnimator animator =ObjectAnimator.ofFloat(MainActivity.this,"transY",value) ;
animator.setDuration(150) ;
animator.start();

}
在晴天的雨伞
2016-05-25 · TA获得超过6868个赞
知道大有可为答主
回答量:5761
采纳率:86%
帮助的人:1138万
展开全部
在自定义Dialog时显示的界面中老是有黑色的边框,下面就介绍使用style去除黑色边框方法。

首先在values/styles定义自定义样式:

?

1
2
3
4
5
6
7
8
9

<style name="MyDialog" parent="@android:Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@drawable/actionbar_item_background</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:background">#FFF</item>
</style>
<item name="android:windowBackground">@drawable/actionbar_item_background</item>这个是重点,只有添加了这个后才能去除黑色的边框

或者是自定义一个透明的背景图片,这样也可以去除黑色边框!
代码:

static class MsgDialog extends Dialog implements
android.view.View.OnClickListener {
private String text;

public MsgDialog(Context context, String text) {
super(context, R.style.MyDialog);
this.text = text;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_dialog);
TextView txt = (TextView) findViewById(R.id.login_dialog_txt);
txt.setText(text);
TextView confirm = (TextView) findViewById(R.id.login_dialog_btn);
confirm.setOnClickListener(this);
}

@Override
public void onClick(View v) {
MsgDialog.this.dismiss();
}

}

xml:

<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingtop="5dp" android:background="#FFF" android:orientation="vertical">

<textview android:id="@+id/login_dialog_txt" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:text="TextView" android:textcolor="@color/grey3" android:textsize="18sp">

<!-- 分割线 -->

<view android:id="@+id/view_division" style="@style/Viewborder">

<textview android:id="@+id/login_dialog_btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:height="50dp" android:text="确定" android:textcolor="@color/grey3" android:textsize="20sp">

</textview></view></textview></linearlayout>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式