2016-02-29 2 views
0

Я бы подумал, что это довольно просто, но я пробовал несколько вещей, и он не работает. В основном, когда начинается действие, я хочу, чтобы текст редактирования был невидимым (я делаю это, делая размер 0dp, ширину и высоту).Почему не изменяется edittext dp, когда пользователь начинает вводить его?

Тогда идея заключается в том, когда пользователь вводит на экранную клавиатуру, изменения размера и пользователь может видеть editText и то, что набирается.

Вот мой код:

MainActivity.java

package com.example.chris.sunil_gupta; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.provider.CallLog; 
import android.text.Editable; 
import android.text.TextWatcher; 
import android.view.View; 
import android.view.WindowManager; 
import android.view.inputmethod.InputMethodManager; 
import android.widget.EditText; 
import android.widget.ListView; 

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

//create a ListView object called listview 
     ListView listview; 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     listview = (ListView) findViewById(R.id.ListView_2); 

     final EditText editText = (EditText) findViewById(R.id.editText); 
     editText.requestFocus(); 

     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) { 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 


       if (editText.length() > 0) { 

        //Your query to fetch Data 
//   editText.getLayoutParams().width=32; 
//   editText.getLayoutParams().height=50; 
        editText.setWidth(32); 
        editText.setHeight(50); 
       } 
      } 
     }); 

    } 

} 

layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/LinearLayout1" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="0dp" 
    android:paddingLeft="0dp" 
    android:paddingRight="0dp" 
    android:paddingTop="0dp" 
    tools:context=".MainActivity"> 

    <ListView android:id="@+id/ListView_2" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:background="@color/black" 
     android:layout_weight="1"> 
    </ListView> 

    <EditText 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:id="@+id/editText" 
     android:background="@null" 
     android:inputType="phone"> 
    <!--android:visibility="invisible"--> 
    </EditText> 


</LinearLayout> 

ответ

1

К сожалению, изменения к этому:

float density=getResource().getDisplayMetrics().density; 
editText.getLayoutParams().width =(int)(32*density); 
editText.getLayoutParams().height =(int)(50*density); 
editText.requestLayout(); 
+0

Я думаю, вы имеете в виду getResources()? Моя editText.getLayoutParams(). Width = (int) 32 * плотность; editText.getLayoutParams(). Height = (int) 50 * плотность; подкрашивается красным цветом, с сообщением красного цвета, когда я наводил: Несовместимые типы. Обязательно: int, Найдено: float Знаете, как я мог это исправить? – CHarris

1
try it 
if (s.length() > 0) { 

        //Your query to fetch Data 
//   editText.getLayoutParams().width=32; 
//   editText.getLayoutParams().height=50; 
        editText.setWidth(32); 
        editText.setHeight(50); 
       } 
      } 
instead of 
if (editText.length() > 0) { 

        //Your query to fetch Data 
//   editText.getLayoutParams().width=32; 
//   editText.getLayoutParams().height=50; 
        editText.setWidth(32); 
        editText.setHeight(50); 
       } 
      } 
+0

Спасибо Хисар, фактически не перед моей машиной прямо сейчас, но даст ему возможность вернуться назад. Хотя ... Я почти уверен, что уже пробовал это, и это не сработало. – CHarris

+0

, если он не будет работать, попробуйте это if (s.toString(). Length> 0) {body} –

+0

Спасибо, Хизар. Корень проблемы, однако, заключался в том, что мне не хватало editText.requestLayout(); – CHarris

1

Попробуйте следующее:

editText.getLayoutParams().width = 32; 
editText.getLayoutParams().height = 50; 
editText.requestLayout(); 

Однако эти значения находятся в пикселях. Таким образом, вам может потребоваться выполнить некоторое преобразование из dp в px перед установкой значений.

+0

Спасибо Ugurcan. Я дал правильному ответу wngxao, поскольку он дал мне ответ, который выработал конверсии. +1 хотя. – CHarris

0

попробовать это. set minWidth и setHeight, а также установить ширину и высоту на wrap_content

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:minHeight="0dp" 
    android:minWidth="0dp" 
    android:id="@+id/editText" 
    android:background="@null" 
    android:inputType="phone"> 
Смежные вопросы