ListView项目显示在整个屏幕上

时间:2016-10-23 09:07:29

标签: android listview android-studio

我试图在Android Studio(To-Do应用程序)上创建我的第一个应用程序,但是我遇到了困难。我遇到的问题:

  1. "当我写入EditText字段"时,ListView项目在屏幕上显示。 enter image description here enter image description here

  2. "在我完成目标之后,我无法按下" BUILD!"立刻按下按钮,我要做的回来'按钮一次,制作" BUILD!"按钮反应。"

  3. enter image description here

    这里有什么正确的方法?任何关于代码的建议都将受到高度赞赏!

    JAVA:

    public class MainActivity extends AppCompatActivity {
    private ArrayList<String> items;
    private ArrayAdapter<String> itemsAdapter;
    private ListView lvItems;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        lvItems = (ListView) findViewById(R.id.listView);
        items = new ArrayList<String>();
        itemsAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, items);
        lvItems.setAdapter(itemsAdapter);
    }
    
    // ADDING YOUR FUTURE GOALS!
    public void onBuildButton(View v){
    
        EditText dreamText = (EditText) findViewById(R.id.dreamText);
        String itemText = dreamText.getText().toString();
        itemsAdapter.add(itemText);
        dreamText.setText("");
    }
    }
    

    XML:

    ... 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true"
    tools:context="com.example.mrti.todo.MainActivity">
    
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:background="#F55449"
        android:id="@+id/belowTask"
        android:layout_height="230dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true">
    
        <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/dreamText"
            android:hint="@string/build_your_dreams"
            android:layout_gravity="center|center_vertical"
            android:textColor="#FFFFFF"
            android:textColorHint="#c5c5c5"
            android:background="@android:color/transparent"
            android:paddingTop="60dp"
            android:paddingBottom="0dp"
            android:layout_marginBottom="0dp"
            android:layout_marginTop="20dp" />
        <View
            android:id="@+id/UnderLine"
            android:layout_width="250dp"
            android:layout_gravity="center|center_vertical"
            android:layout_height="1dp"
            android:layout_below="@+id/dreamText"
            android:layout_centerHorizontal="true"
            android:background="#FFCD2626"
            android:paddingBottom="30dp"
            android:layout_marginBottom="0dp"
            android:layout_marginTop="0dp" />
        <Button
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:text="@string/build"
            android:layout_gravity="center"
            android:background="#FFCD2626"
            android:id="@+id/buildButton"
            android:paddingTop="0dp"
            android:layout_marginTop="65dp"
            android:onClick="onBuildButton" />
    </LinearLayout>
    
    <ListView
        android:layout_width="match_parent"
        android:layout_height="320dp"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:id="@+id/listView" />
    

2 个答案:

答案 0 :(得分:1)

欢迎使用Android开发。

开始前的小注:

  

不推荐使用full_parent。请改用match_parent

此外,无论您是在最顶层的xml元素上使用RelativeLayout还是LinearLayout,都是不可见的,但我会假设在后续视图中给定alignParentStart的RelativeLayout。

问题出在'alignParentTop'和&amp;布局上的'alignParentBottom'。由于您使用的是RelativeLayout,因此视图可以在彼此之间进行对齐。

您还为ListView定义了特定大小。 你可以用两种方式做到这一点:

1 - 通过限制ListView的大小。这意味着无论新添加的条目如何,您都将拥有一个有限大小的可靠ListView。

android:layout_height="320dp"

2 - 通过执行调整您插入的值。这意味着当您添加更多条目时,ListView的大小会增加

android:layout_height="wrap_content" 

无论哪种方式,这都应该足够了。这是完整的xml。 让我知道你的结果。

 <RelativeLayout
        android:descendantFocusability="beforeDescendants"
        android:focusableInTouchMode="true"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        tools:context="com.example.mrti.todo.MainActivity"
        android:orientation="horizontal">

        <ListView
            android:id="@+id/listView"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_height="wrap_content"
            android:layout_width="match_parent" />

        <LinearLayout
            android:background="#F55449"
            android:id="@+id/belowTask"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_below="@id/listView"
            android:layout_height="230dp"
            android:layout_width="match_parent"
            android:orientation="vertical">

            <EditText
                android:background="@android:color/transparent"
                android:hint="@string/build_your_dreams"
                android:id="@+id/dreamText"
                android:layout_gravity="center|center_vertical"
                android:layout_height="wrap_content"
                android:layout_marginBottom="0dp"
                android:layout_marginTop="20dp"
                android:layout_width="wrap_content"
                android:paddingBottom="0dp"
                android:paddingTop="60dp"
                android:textColor="#FFFFFF"
                android:textColorHint="#c5c5c5" />

            <View
                android:background="#FFCD2626"
                android:id="@+id/UnderLine"
                android:layout_below="@+id/dreamText"
                android:layout_gravity="center|center_vertical"
                android:layout_height="1dp"
                android:layout_marginBottom="0dp"
                android:layout_marginTop="0dp"
                android:layout_width="250dp"
                android:paddingBottom="30dp" />

            <Button
                android:background="#FFCD2626"
                android:id="@+id/buildButton"
                android:layout_gravity="center"
                android:layout_height="30dp"
                android:layout_marginTop="65dp"
                android:layout_width="wrap_content"
                android:onClick="onBuildButton"
                android:paddingTop="0dp"
                android:text="@string/build" />
        </LinearLayout>

    </RelativeLayout>

答案 1 :(得分:1)

正如您所说,这是您的第一个Android应用程序,因此建议您远离任何已弃用的方法,属性或类似&#34; fill_parent&#34;

您可以通过

将ListView保留在插入框下方
android:layout_below="@id/belowTask"

注意:这个&#34; layout_below&#34;是RelativeLayout的参数

因此顶部框将始终保持在那里并且键盘出现然后ListView的大小将缩小(因为底部现在是键盘顶部)

以下是您的布局的样子:

<RelativeLayout 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:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true"
    tools:context="com.example.mrti.todo.MainActivity">

    <LinearLayout
        android:id="@+id/belowTask"
        android:layout_width="match_parent"
        android:layout_height="230dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:background="#F55449"
        android:orientation="vertical">

        <EditText
            android:id="@+id/dreamText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center|center_vertical"
            android:layout_marginBottom="0dp"
            android:layout_marginTop="20dp"
            android:background="@android:color/transparent"
            android:hint="@string/build_your_dreams"
            android:paddingBottom="0dp"
            android:paddingTop="60dp"
            android:textColor="#FFFFFF"
            android:textColorHint="#c5c5c5" />

        <View
            android:id="@+id/UnderLine"
            android:layout_width="250dp"
            android:layout_height="1dp"
            android:layout_gravity="center|center_vertical"
            android:layout_marginBottom="0dp"
            android:layout_marginTop="0dp"
            android:background="#FFCD2626"
            android:paddingBottom="30dp" />

        <Button
            android:id="@+id/buildButton"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:layout_gravity="center"
            android:layout_marginTop="65dp"
            android:background="#FFCD2626"
            android:onClick="onBuildButton"
            android:paddingTop="0dp"
            android:text="@string/build" />
    </LinearLayout>

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@id/belowTask" />

</RelativeLayout>