我试图在Android Studio(To-Do应用程序)上创建我的第一个应用程序,但是我遇到了困难。我遇到的问题:
"在我完成目标之后,我无法按下" BUILD!"立刻按下按钮,我要做的回来'按钮一次,制作" BUILD!"按钮反应。"
这里有什么正确的方法?任何关于代码的建议都将受到高度赞赏!
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" />
答案 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>