自定义dialog怎样隐藏actionbar
2个回答
展开全部
当 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();
}
代码非常之简单
@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();
}
展开全部
在自定义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>
首先在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>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询