2016-02-29 28 views
0

我会认为这很简单,但我已经尝试了几件事情,它不起作用。基本上,当活动开始时,我希望我的编辑文本是不可见的(我通过将大小设置为0dp,宽度和高度来做到这一点)。为什么在用户开始输入时不编辑文本改变dp?

然后,这个想法是当用户键入softkeyboard,大小改变,用户可以看到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 * density; editText.getLayoutParams()。height =(int)50 * density;以红色突出显示,悬停时消息为红色:不兼容的类型。必需:int,Found: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

感谢Khizar,其实不是,但现在会搏一搏的时候了。虽然...我很确定我已经尝试过,但没有奏效。 (s.toString()。length> 0){body} – CHarris

+0

Thanks Khizar。问题的根源在于我缺少editText.requestLayout(); – CHarris

+0

欢迎@ChristopheHarris –

1

尝试以下操作:

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

但是,这些值以像素为单位。因此,在设置值之前,您可能需要执行从dp到px的一些转换。

+0

感谢Ugurcan。我给了wengxao正确的答案,因为他给了我一个解决转换的答案。 +1虽然。 – CHarris

0

尝试。在我的机器的正面设置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"> 
相关问题