EditText收缩

时间:2013-11-29 09:43:25

标签: android android-layout android-edittext

问题: EditText无论我将做什么总是像缠绕文本一样(他适合文本长度并在打字时扩展)。我的目的是修改EditText的大小。

目标android:19 最小的android:10

我尝试将EditText放在MainActivity上:

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.content.Context;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;

public class MainActivity extends ActionBarActivity
{

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        showActionBar(this);
    }


    @SuppressLint("NewApi")
    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }


   @SuppressLint("NewApi")
    private void showActionBar(Context context)
    {
        LayoutInflater inflator = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View searchView = inflator.inflate(R.layout.search_bar, null);

        ActionBar actionBar = getSupportActionBar();
        actionBar.setDisplayHomeAsUpEnabled(false);
        actionBar.setDisplayShowHomeEnabled(false);
        actionBar.setDisplayShowCustomEnabled(true);
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setCustomView(searchView);
    }
}
在showActionBar方法中添加的seach_bar.xml是layout \ search_bar.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<ImageView
    android:id="@+id/appIcon"
    android:layout_width="45dp"
    android:layout_height="match_parent"
    android:contentDescription="@string/app_name"
    android:src="@drawable/ic_launcher" />

<EditText
    android:id="@+id/searchEditText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:inputType="text" />

</LinearLayout>

值\ styles.xml:

<resources>
   <style name="AppBaseTheme" parent="Theme.AppCompat.Light"></style>
   <style name="AppTheme" parent="AppBaseTheme"></style>
</resources>

看起来像这样:

wrong look of EditText

7 个答案:

答案 0 :(得分:2)

 <EditText
        android:id="@+id/txtViewSearch"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:singleLine="true" >
    </EditText>

答案 1 :(得分:1)

将线性布局的方向添加到垂直和 将此代码复制并粘贴到xml中:

<EditText
    android:id="@+id/searchEditText"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
     android:maxLines="1"
    android:inputType="text"
    android:singleLine="true" />

答案 2 :(得分:1)

两种可能的解决方案:

使用layout_weight

<ImageView
    android:id="@+id/appIcon"
    android:layout_width="45dp"
    android:layout_height="match_parent"
    android:contentDescription="@string/app_name"
    android:src="@drawable/ic_launcher" />

<EditText
    android:id="@+id/searchEditText"
    android:layout_width="0dp" <!-- recommended but not required -->
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:layout_weight="1" <!-- add this line -->
    android:inputType="text" />

使用固定的width

<EditText
        android:id="@+id/searchEditText"
        android:layout_width="fill_parent" <!-- recommended but not required -->
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:maxWidth="120dp" <!-- value based on your desire -->
        android:inputType="text" />

答案 3 :(得分:1)

经过多次尝试,我发现强制EditText填充整个ActionBar的唯一方法是将其大小设置为某个非常大的数字(例如10000):

android:layout_width="10000dp"

因为我没有听说过这么大的设备,所以应该按预期工作。

答案 4 :(得分:0)

将minHeight添加到editText,如下所示 -

android:minHeight="175px" // Your fixed size

这将修复editText的大小。

答案 5 :(得分:0)

添加

android:orientation = "vertical"

in

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

因此帐号中的EditText需要"match_parent"

答案 6 :(得分:0)

如今我仍然不知道它是如何运作的。
无论如何,如果我在Activity中使用Amulya Khare建议,那么它是正确的,但它在ActionBarActivity中根本不起作用。