第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何隱藏Android上的軟鍵盤,點(diǎn)擊外部EditText?

如何隱藏Android上的軟鍵盤,點(diǎn)擊外部EditText?

冉冉說 2019-07-08 15:07:05
如何隱藏Android上的軟鍵盤,點(diǎn)擊外部EditText?好的,每個(gè)人都知道要隱藏鍵盤,您需要實(shí)現(xiàn):InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(getCurrentFocus() .getWindowToken(), 0);但是這里最重要的是當(dāng)用戶觸摸或選擇任何其他不是鍵盤的地方時(shí),如何隱藏鍵盤。EditText還是軟鍵盤?我試著用onTouchEvent()在我父母身上Activity但是,只有當(dāng)用戶接觸到任何其他視圖并且沒有滾動(dòng)視圖時(shí),這才有效。我試圖實(shí)現(xiàn)一個(gè)觸摸,點(diǎn)擊,焦點(diǎn)偵聽器,但沒有任何成功。我甚至嘗試實(shí)現(xiàn)自己的滾動(dòng)視圖來攔截觸摸事件,但我只能獲得事件的坐標(biāo),而不是單擊視圖。有什么標(biāo)準(zhǔn)的方法嗎?在iPhone中,這真的很容易。
查看完整描述

3 回答

?
www說

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

下面的代碼片段簡單地隱藏了鍵盤:

public static void hideSoftKeyboard(Activity activity) {
    InputMethodManager inputMethodManager = 
        (InputMethodManager) activity.getSystemService(
            Activity.INPUT_METHOD_SERVICE);
    inputMethodManager.hideSoftInputFromWindow(
        activity.getCurrentFocus().getWindowToken(), 0);}

您可以將其放在實(shí)用程序類中,或者如果要在活動(dòng)中定義它,請(qǐng)避免使用活動(dòng)參數(shù),或調(diào)用hideSoftKeyboard(this).

最棘手的部分是什么時(shí)候叫它。您可以編寫一個(gè)方法來迭代View在您的活動(dòng)中,并檢查它是否為instanceof EditText如果它不是注冊(cè)setOnTouchListener所有的東西都會(huì)就位。如果您想知道如何做到這一點(diǎn),這實(shí)際上是相當(dāng)簡單的。下面是您所做的工作,您可以編寫如下所示的遞歸方法,實(shí)際上您可以使用它來做任何事情,比如安裝自定義字體等等.這是方法

public void setupUI(View view) {

    // Set up touch listener for non-text box views to hide keyboard.
    if (!(view instanceof EditText)) {
        view.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                hideSoftKeyboard(MyActivity.this);
                return false;
            }
        });
    }

    //If a layout container, iterate over children and seed recursion.
    if (view instanceof ViewGroup) {
        for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
            View innerView = ((ViewGroup) view).getChildAt(i);
            setupUI(innerView);
        }
    }}

僅此而已,只需在您之后調(diào)用此方法即可。setContentView在你的活動(dòng)中。如果您想知道您將傳遞哪個(gè)參數(shù),則是id父容器的。分配id到父容器,如

<RelativeLayoutPanel android:id="@+id/parent"> ... </RelativeLayout>

打電話setupUI(findViewById(R.id.parent))僅此而已。

如果您想有效地使用它,您可以創(chuàng)建一個(gè)擴(kuò)展Activity并將此方法放入應(yīng)用程序中,并使應(yīng)用程序中的所有其他活動(dòng)擴(kuò)展該活動(dòng)并調(diào)用其setupUI()onCreate()方法。

希望能幫上忙。

如果使用了多個(gè)活動(dòng),請(qǐng)定義公共id到父級(jí)布局,如<RelativeLayout android:id="@+id/main_parent"> ... </RelativeLayout>

然后將類擴(kuò)展到Activity并定義setupUI(findViewById(R.id.main_parent))在其OnResume()并擴(kuò)展該類,而不是“活動(dòng)”in your program


查看完整回答
反對(duì) 回復(fù) 2019-07-08
?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊

我覺得這個(gè)公認(rèn)的答案有點(diǎn)復(fù)雜。

這是我的解決辦法。添加一個(gè)OnTouchListener你的主要布局

findViewById(R.id.mainLayout).setOnTouchListener(this)

并將以下代碼放入OnTouch方法中。

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(getCurrentFocus()
.getWindowToken(), 0);

這樣,您就不必對(duì)所有視圖進(jìn)行迭代。


查看完整回答
反對(duì) 回復(fù) 2019-07-08
  • 3 回答
  • 0 關(guān)注
  • 804 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)