我想知道是否有人知道如何在Facebook Android应用程序中创建类似Facebook的popover视图以供评论。
这就是我的意思:
除了您可以拖动以取消它的句柄之外,它是原生的Android UI控件还是Facebook自己实现的?
您可以使用弹出窗口来完成此操作。http://developer.android.com/reference/android/widget/PopupWindow.html
当然,您需要自己设置样式并填写弹出窗口的内容。你可以从如何制作圆角布局中获得一些造型创意。。?
编辑:
事实上,尽管我使用了DialogFragment,但我很确定他们的弹出窗口没有使用DialogFragment(甚至根本没有对话框!)。原因是调整大小功能。如果这是您想要的,那么您不能使用DialogFragment。您只需将新视图添加到布局中即可。看起来facebook还有另一个视图,它位于你的墙和一个略微半透明的假弹出窗口之间,并监听点击以消除该视图。像这样的东西需要一些实际的努力和时间来构建,所以我不会为您制作这个。如果你对此有任何疑问,请告诉我,我可能会引导你找到你想要的解决方案。
原件:
我为您编写了弹出窗口:
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState == null) {
F1.newInstance().show(getFragmentManager(), null);
}
}
public static class F1 extends DialogFragment {
public static F1 newInstance() {
F1 f1 = new F1();
f1.setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_DeviceDefault_Dialog);
return f1;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Remove the default background
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
// Inflate the new view with margins and background
View v = inflater.inflate(R.layout.popup_layout, container, false);
// Set up a click listener to dismiss the popup if they click outside
// of the background view
v.findViewById(R.id.popup_root).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
return v;
}
}
}
popup\u布局。xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:id="@+id/popup_root">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="72dp"
android:layout_marginBottom="72dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:padding="20dp"
android:clickable="true"
android:background="@drawable/dialog_background">
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:textColor="#000"
android:text="Content goes here!" />
</FrameLayout>
</FrameLayout>
和dialog\u背景。xml(进入分辨率/可绘制):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<solid android:color="#FFF" />
<corners android:topLeftRadius="20dp" android:topRightRadius="20dp"
android:bottomLeftRadius="20dp" android:bottomRightRadius="20dp"/>
<stroke android:color="#7F7F7F" android:width="1dp" />
</shape>
看起来是这样的:
只需添加您的视图内容,您就可以开始了!
创建类似弹出窗口视图的最佳方法是使用弹出窗口,因为您可以将弹出窗口放置在任何特定视图位置(或屏幕的中央/顶部/底部)。您还可以使用DialogFragment实现相同的UI,但不能定位在特定的视图位置。
我这里有一个完整的工作代码https://gist.github.com/libinbensin/67fcc43a7344758390c3
第1步:创建您的自定义布局,例如,Facebook有一个带有ListView
和EditText
的Header TextView
。
步骤2:将布局设置为弹出窗口
将布局充气以设置
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View inflatedView = layoutInflater.inflate(R.layout.fb_popup_layout, null,false);
这个Layout
有一个ListView
,所以在布局中找到ListView
并填充数据。您可以在此处拥有自己的视图
ListView listView = (ListView)inflatedView.findViewById(R.id.commentsListView);
listView.setAdapter(new ArrayAdapter<String>(TryMeActivity.this,
R.layout.fb_comments_list_item, android.R.id.text1,contactsList));
现在,创建一个具有特定高度和宽度的PopupWindow
实例。我更喜欢根据设备设置大小。
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
popWindow = new PopupWindow(inflatedView, size.x - 50,size.y - 500, true );
设置弹出窗口的焦点。
popWindow.setFocusable(true);
使其可在弹出区域外部触摸时关闭弹出窗口
popWindow.setOutsideTouchable(true);
现在,用一个可绘制窗口为弹出窗口设置背景。可绘制的具有圆角半径的矩形。
popWindow.setBackgroundDrawable(getResources().getDrawable(R.drawable.fb_popup_bg));
最后。在所需位置显示PopupWindow
。我让它显示在屏幕的底部
,带有一些X和Y位置
popWindow.showAtLocation(v, Gravity.BOTTOM, 0,150); // 0 - X postion and 150 - Y position
您还可以设置一个动画
以在PopUpWindow
出现和消失时使用
popWindow.setAnimationStyle(R.anim.animation); // call this before showing the popup
我想要这个曲线幻灯片在我的应用程序
问题内容: 我完全不了解这个过程。我已经能够导航到Java SDK中包含keytool的文件夹。尽管我不断收到错误,但openssl无法识别为内部或外部命令。问题是,即使我可以解决这个问题,我该怎么办?之后怎么办? 问题答案: 这是你需要做的 从代码 提取中下载openSSl 。在C:/中创建一个文件夹-OpenSSL,然后在此处复制提取的代码。 检测debug.keystore文件路径。如果找不
我试图在android中创建一个具有圆形边缘的视图。到目前为止,我找到的解决方案是定义一个具有圆角的形状,并将其用作该视图的背景。 下面是我所做的,定义一个可绘制的,如下所示: 现在我用它作为我的布局背景,如下所示: 这工作非常好,我可以看到视图有圆形的边缘。 但是我的布局中有许多其他的子视图,比如ImageView或MapView。当我在上面的布局中放置时,图像的角落不会被裁剪/裁剪,而是显示为
我正在Springboot应用程序中的Mongo Db中创建一个视图。下面是相同的代码 我想添加allowDiskUse:true条件,因为我得到以下错误 堆栈跟踪:|/java.lang.Exception:[profile_event_view@stage[副本集:]]数据库错误!|___/Mongo服务器错误(MongoQueryException):查询失败,错误代码为292,错误消息为“
问题内容: 我想使列表视图中的所有列表项都打开到一个新页面中,因此每个列表视图项都打开到一个我可以使用的新黑色页面上。我根本不知道该如何实现。我已经连续搜索了几个小时,找不到解决方案的答案。如果有人可以显示和/或解释如何执行此操作而不是提供链接,将不胜感激,但是两者之一都很有帮助。 到目前为止,这是我的代码: 这是在我的string.xml中 这是在我的activity_main.xml中。 我应
我想创建一个应用程序,它可以将屏幕行为记录为视频,并以编程方式保存在设备上。有人能帮我吗?