gpt4 book ai didi

android - 同一个Activity中不同的SoftInputMode,有可能吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:47:34 31 4
gpt4 key购买 nike

我尝试在键盘打开时以不同方式设置我的 fragment 调整,但目前我没有得到肯定的结果。请在此处输入代码

目标是仅重新调整两个 fragment 中的一个。

举个例子

Activity

public class MainActivity extends Activity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.frame1, new PlaceholderFragment())
.commit();
getFragmentManager().beginTransaction()
.add(R.id.frame2, new PlaceholderFragment1())
.commit();
}
}
...

fragment :

public static class PlaceholderFragment extends Fragment {

public PlaceholderFragment() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.noresize);
// LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper);


getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
return inflater.inflate(R.layout.fragment_main, container, false);

}
}

public static class PlaceholderFragment1 extends Fragment {

public PlaceholderFragment1() {

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
View rootView = inflater.inflate(R.layout.fragment_main_2, container, false);
return rootView;
}
}

Activity 的主要布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:ignore="MergeRootFrame"
android:orientation="horizontal"
>
<FrameLayout
android:id="@+id/frame1"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/frame2"
android:background="#30000000"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="match_parent">

</LinearLayout>

ok 看到我在activity上重新定义了两次SoftInputMode,这不太可能成功。那么,是否可以做类似 fragment.getWindows.setSoftInputMode (...

对不起我的英语...

最佳答案

您的两个 fragment 是否同时出现在屏幕上?如果是这样,则不可能根据哪个 Fragment 触发软输入打开而产生不同的行为,因为该设置仅适用于整个窗口。

另一方面,如果屏幕上一次只有一个 Fragments,那么 onCreateView() 方法可能不适合放置这段代码。您可能想尝试将其放入 Fragment 方法 onResume()onPause() 中。在 onResume() 中保存现有的软输入模式并将其设置为您想要的,在 onPause() 中将软输入模式恢复为之前的状态。

关于android - 同一个Activity中不同的SoftInputMode,有可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20314052/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com