1

特定のボタンをクリックすると、ポップアップ ウィンドウが画面に表示されます。ポップアップにedittextオブジェクトがありますが、キーボードが表示されないため、intに書き込めませんでした。次に、ポップアップの親ビューの他のボタンは引き続きクリック可能です。これらを修正するにはどうすればよいですか? 私のコード:

edit_text_popup.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="10dip"
    android:background="@color/conn_text" >

    <EditText
        android:id="@+id/editTextInPopup"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/hello_world"
        android:padding="5dip"
        android:background="@color/blue3">
    </EditText>
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:padding="10dip">
        <Button
            android:id="@+id/popupcommitbutton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/ok"/>

        <Button
            android:id="@+id/popupcancelbutton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/cancel"
            android:layout_alignParentRight="true" />
    </RelativeLayout>

</LinearLayout>

ポップアップが呼び出される場所:

public class GroupConnections extends Activity implements OnClickListener {
    Category thiscat;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);     
        setContentView(R.layout.activity_group_connections);        
        View addMoreConnButton =findViewById(R.id.attachMorePeopleButton);
        View editPropButton = findViewById(R.id.editCategoryPropertiesButton);
        addMoreConnButton.setOnClickListener(this);
        editPropButton.setOnClickListener(this);

        //get selected category
        int catId = getIntent().getExtras().getInt("categoryid");
        thiscat = (Category)SocialRssModel.Instance().holders.get(catId);

        //set text views        
        TableRow tabler = (TableRow)findViewById(R.id.tableRow1);
        TextView cateNameTextView = (TextView)tabler.findViewById(R.id.numOfContentsTextView2);
        cateNameTextView.setText(thiscat.getName());

        tabler = (TableRow)findViewById(R.id.tableRow2);
        CheckBox enable = (CheckBox)tabler.findViewById(R.id.notificationCheckBox);
        enable.setChecked(thiscat.isSelected());
    }
    /**
     * Button listeners are specified
     */
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.attachMorePeopleButton:
                Intent i = new Intent(this, AddMoreConnections.class);
                startActivity(i);
                break;
            case R.id.editCategoryPropertiesButton:
                LayoutInflater layoutInflater = (LayoutInflater)getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
                View popupView = layoutInflater.inflate(R.layout.edit_text_popup, null);
                final PopupWindow editpopup = new PopupWindow(popupView,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
                //specify cancel button
                View cancelbutton = popupView.findViewById(R.id.popupcancelbutton);
                cancelbutton.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View arg0) {
                        editpopup.dismiss();
                    }
                });
                //specify edittext
                editpopup.setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
                editpopup.showAsDropDown(findViewById(R.id.editCategoryPropertiesButton), 0, -30);
                break;

            // More buttons go here (if any) ...
        }
    }
}

softInputMode が非表示になっていないことを示す AndroidManifest のアクティビティ タグ:

<activity
    android:name=".GroupConnections"
    android:label="@string/app_name" >
</activity>
4

2 に答える 2

0

次のリンクで解決策を見つけました: EditText On A Popup Window

次のコマンドを追加editpopup.setFocusable(true);すると、両方の問題が解決します。

于 2013-01-30T16:07:16.653 に答える
0

同様の問題があります。manifest.xml のアクティビティ タグに次の行を追加してみてください。

android:windowSoftInputMode="stateVisible"

ポップアップ ダイアログをアクティビティに変更します。manifest.xml でこのコードを使用します。これにより、アクティビティがダイアログとして表示されます。通常のアクティビティとして開始できますが、そのようなダイアログが表示されます。カスタム ダイアログを表示する方が簡単です。

<activity
            android:name=".view.MyDialog"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateVisible"
            android:theme="@android:style/Theme.Dialog" >
        </activity>
于 2013-01-30T15:54:51.177 に答える