我注意到像google maps和lyft这样的应用程序有一个功能/行为,当用户开始在文本字段中键入地址时,文本字段占用整个屏幕(启动一个新活动),特别关注输入。当用户从列表视图中选择某些内容时,他们将使用所有其他信息返回到屏幕
我很好奇这样的事情是如何实现的。 他们使用不同的活动吗?
我正在处理的应用程序有一个类似的功能,但我想我不知道如何在用户开始输入时让我的文本字段覆盖整个屏幕(或者可能启动不同的活动)。
我只是在寻找一个指针或一个例子。不幸的是因为我不知道我正在寻找的确切名称,这使得在文档中搜索它有点困难。任何指针都将不胜感激!
PS:我知道这种方法,但这不是我要找的东西
<activity
android:name=".MyActivity"
android:windowSoftInputMode=""/>
答案 0 :(得分:0)
我实际上会做的是:我会将其创建为“简单”视图。不是片段,不是活动。
match_parent
,我会放置
它在活动内部(或片段或其他)。例如,使用align_parentTop
锚定它。clipChildren
设置为false
Activity
onCreate
内(或其他一些类似的地方)
一种容器),我会添加更多这样的东西:代码:
mExpandableTextView = (RelativeLayout)findViewById(R.id.expandable_text_view_layout);
//layout representing the expandable textview (defined in expanded state)
mExpandableTextView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int width = mExpandableTextView.getWidth();
int height = mExpandableTextView.getHeight();
if (width > 0 && height > 0) {
mExpandableTextView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
// setting the height and width of the view to fixed values (instead of match_parent)
// this problably is not really necessary but I will write it just to be sure it works as intended
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)mExpandableTextView.getLayoutParams();
params.height = height;
params.width = width;
mExpandableTextView.setLayoutParams(params);
mMaxTranslationY = height - mCollapsedHeight;
//mCollapsedHeight is the height of the view in collapsed state
//provide it in most convenient way for you
mExpandableTextView.setTranslationY(mMaxTranslationY);
//setting it to the collapsed state when activity is being displayed for the first time
}
}
});
(如果您的应用适用于设备removeGlobalOnLayoutListener()
)
< API16
崩溃:
mExpandableTextView.animate().translationY(mMaxTranslationY); //to collapse with animation
展开:
mExpandableTextView.animate().translationY(0); //to expand with animation
答案 1 :(得分:0)
我最终做的一种更简单的方法是在文本字段激活后启动结果活动,并在新完成后设置值