android - 如何使 dialogFragment 宽度与父级匹配?

标签 android xml android-layout android-xml android-dialogfragment

我有这个dialog fragment,我有两个问题。

1.How do i make the width match parent (cleanest and best solution please).

  1. In the dialog fragment i have an editText. How do i make it pop up a soft keyboard when the dialog fragment opens?

希望大家帮帮忙!

这是我的对话框 fragment java 代码:

 @Nullable
    @Override
    public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        rootView  = inflater.inflate(R.layout.activity_13g_add_comment, container, false);//The container is the rootView.

        myCognito = new MyCognito(getActivity().getApplicationContext(),getActivity().getBaseContext());

        cardClient = myCognito.getCardClient();

        bindActivity();

        return rootView;
    }

    private void bindActivity()
    {
        doneButton = (ImageButton) rootView.findViewById(R.id.add_comment_doneButton);
        doneButton.setVisibility(View.GONE);

        imageView = (ImageView) rootView.findViewById(R.id.add_comment_IV);

        RemoveGlideCacheAsyncTask removeGlideCacheAsyncTask = new RemoveGlideCacheAsyncTask(getActivity().getBaseContext(),Global_Class.getInstance().getValue().user.getUsername());
        removeGlideCacheAsyncTask.execute();


        editText = (EditText) rootView.findViewById(R.id.add_comment_ET);

        editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count)
            {
                enableSubmitButton();
            }

            @Override
            public void afterTextChanged(Editable s)
            {

            }
        });

        imageView = (ImageView) rootView.findViewById(R.id.add_comment_IV);

        doneButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {

            }
        });
    }

    private void enableSubmitButton()
    {
        boolean isReady = editText.getText().toString().length() > 0;
        if(isReady)
        {
            doneButton.setVisibility(View.VISIBLE);
        }
        else
        {
            doneButton.setVisibility(View.GONE);
        }
    }

这是xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_margin="10dp">
        <de.hdodenhof.circleimageview.CircleImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:id="@+id/add_comment_IV"/>
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:hint="Add a comment"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:textColor="@color/black"
            android:id="@+id/add_comment_ET"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="5dp"
            android:background="@android:color/transparent"
            android:maxLength="140"/>
        <ImageButton
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:background="@color/green_main"
            android:id="@+id/add_comment_doneButton"/>
    </LinearLayout>
</LinearLayout>

最佳答案

如下打开DialogFragment

SampleDialogFragment sampleDialogFragment = new SampleDialogFragment();
SampleDialogFragment.setStyle(DialogFragment.STYLE_NO_FRAME, 0);
SampleDialogFragment.show(getActivity().getSupportFragmentManager(), "sometag");

然后在 DailogFragment 重写 onStart() 方法如下

@Override
public void onStart() {
  super.onStart();
  getDialog().getWindow()
         .setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
}

然后显示软键盘试试这个

((InputMethodManager) sampleedittext.getContext()
        .getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(
        sampleedittext, InputMethodManager.SHOW_IMPLICIT);

或者你可以 为 Dialog

创建自定义样式
<style name="CustomDialog" parent="AppTheme" >
  <item name="android:windowNoTitle">true</item>
  <item name="android:windowFullscreen">true</item>
  <item name="android:windowIsFloating">true</item>
  <item name="android:windowCloseOnTouchOutside">true</item>
</style>

然后在对话框 fragment 中使用该样式

@Override public void onCreate(@Nullable Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setStyle(DialogFragment.STYLE_NORMAL, R.style.CustomDialog);
}

@Override public void onStart() {
  super.onStart();
  getDialog().getWindow()
    .setLayout(WindowManager.LayoutParams.MATCH_PARENT,
        WindowManager.LayoutParams.MATCH_PARENT);
}

SampleDialogFragment sampleDialogFragment = new SampleDialogFragment();
SampleDialogFragment.show(getActivity().getSupportFragmentManager(), "sometag");

关于android - 如何使 dialogFragment 宽度与父级匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42501704/

相关文章:

android - 设置背景图像以填充整个页面

c# - 使用 MvcContrib 的 XmlResult 时 xml 元素名称中的小写

java - 我想在java中使用XQuery For Xml处理

android - 将 float 操作按钮集成到带有工具栏的线性布局中

java - Android线性布局背景透明度

android - 如何调整按钮内图像的大小

php - Android Studio Mysql PHP - 无法连接数据库

android - 在 Android 上的 map Activity 中刷新叠加对象

android - 为什么我在 Kotlin 中键入 View 名称/ID 时会出现 "unresolved reference"错误?

xml - 使用 XSL 在 tr 类中交替行颜色