簡體   English   中英

如何以編程方式更改 LinearLayout 以適應輸入到 EditText 的數字而不移動布局的其他部分?

[英]How to change LinearLayout programmaticaly to fit numbers entered to EditText without moving other parts of layout?

我正在嘗試以編程方式創建 LinearLayout,我希望允許用戶輸入數字范圍。 現在看起來像這樣:

在此處輸入圖像描述

但是當我嘗試輸入更多數字時,例如。 100、101 或 3,50 它消失了。

在此處輸入圖像描述

我想沒有足夠的空間來顯示它,但我不知道出了什么問題。 通常我不想在用戶輸入一些值時移動 + 和 - 按鈕,所以我想它應該是硬編碼的。 最多只有 5-6 位數字,所以我只需要空間,但正如我所說,我找不到可以更改它的地方,因為我的更改要么移動整個布局,要么什么都不做.

下面是我的代碼:

LinearLayout horizontalLayout = new LinearLayout(mContext);
            LinearLayout titleLayout = new LinearLayout(mContext);
            LinearLayout countLayout = new LinearLayout(mContext);
            ImageButton buttonAdd = new ImageButton(mContext);
            ImageButton buttonSub = new ImageButton(mContext);
            TextView titleTextView = new TextView(mContext);
            EditText countEditText = new EditText(mContext);

            final int[] currentCount = {defaultValue};

            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
            LinearLayout.LayoutParams linearLayout = new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1f);
            LinearLayout.LayoutParams utilParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

            horizontalLayout.setOrientation(LinearLayout.HORIZONTAL);
            horizontalLayout.setLayoutParams(params);

            utilParams.gravity = Gravity.CENTER_VERTICAL;
            titleLayout.setOrientation(LinearLayout.HORIZONTAL);
            titleLayout.setPadding(0, pxFromDp(mContext, 16),0, pxFromDp(mContext, 16));
            titleLayout.setLayoutParams(linearLayout);

            countLayout.setOrientation(LinearLayout.HORIZONTAL);
            countLayout.setPadding(0, pxFromDp(mContext, 16),0, pxFromDp(mContext, 16));
            countLayout.setLayoutParams(linearLayout);

            utilParams.setMargins(0,0,pxFromDp(mContext, 16f),0);
            titleTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP,16);
            titleTextView.setText(title);
            titleTextView.setLayoutParams(utilParams);
            titleLayout.addView(titleTextView);

            utilParams.setMargins(pxFromDp(mContext, 16f),0,pxFromDp(mContext, 16f),0);
            buttonSub.setImageResource(R.drawable.ic_remove);
            buttonSub.setLayoutParams(utilParams);
            buttonSub.setBackgroundColor(mContext.getResources().getColor(R.color.fsm_survey_btn));
            buttonSub.setColorFilter(ContextCompat.getColor(mContext, R.color.fsm_white), android.graphics.PorterDuff.Mode.SRC_IN);
            countLayout.addView(buttonSub);

            countEditText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
            countEditText.setText(String.valueOf(defaultValue));
            countEditText.setLayoutParams(linearLayout);
            countEditText.setGravity(Gravity.CENTER);
            countLayout.addView(countEditText);

            buttonAdd.setImageResource(R.drawable.ic_add_24);
            buttonAdd.setLayoutParams(utilParams);
            buttonAdd.setBackgroundColor(mContext.getResources().getColor(R.color.fsm_survey_btn));
            buttonAdd.setColorFilter(ContextCompat.getColor(mContext, R.color.fsm_white), android.graphics.PorterDuff.Mode.SRC_IN);
            countLayout.addView(buttonAdd);

            horizontalLayout.addView(titleLayout);
            horizontalLayout.addView(countLayout);

您可以做的是為編輯文本創建單獨的 LinearLayout.LayoutParams 並將 addTextChangedListener 添加到該編輯文本,並在 onTextChanged 上編寫 switch 語句以增加輸入數字長度增加時編輯文本的權重。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM