在XML预览中可见的按钮在模拟器或设备

时间:2016-08-27 18:44:39

标签: android

我是Android应用程序开发的新手,也是一个学习项目, 我正在制作咖啡订购应用程序。 我设计了应用程序的UI并为按钮编写了基本的onclick命令,但是当应用程序在模拟器或设备上运行时,某些按钮不可见

这是项目存储库:https:// github.com/shubhamsuryawanshi/Coffee-ordering-app.git

Here's how it appears on the XML Preview

This is how it looks on the emulator

这是完整的XML代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="#D7CCC8"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.android.justjava.MainActivity">

<TextView
    android:id="@+id/quantitylabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:text="Quantity :"
    android:textSize="25dp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/quantity"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/decrease"
    android:layout_margin="8dp"
    android:layout_toLeftOf="@+id/decrease"
    android:layout_toStartOf="@+id/decrease"
    android:text="0"
    android:textSize="45dp" />

<TextView

    android:id="@+id/pricelabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignTop="@+id/price"
    android:text="Price :"
    android:textSize="25dp"
    android:textStyle="bold" />

<Button
    android:id="@+id/placeorder"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:foregroundTint="#d7ccc8"
    android:onClick="SubmitOrder"
    android:text="Place Order"
    android:textAllCaps="false"
    android:textSize="18dp"
    android:textStyle="italic"
    android:typeface="sans" />

<Button
    android:id="@+id/cancel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:text="Cancel"
    android:textAllCaps="false"
    android:textSize="18dp"
    android:textStyle="italic"
    android:typeface="sans" />

<TextView
    android:id="@+id/price"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignEnd="@+id/placeorder"
    android:layout_alignRight="@+id/placeorder"
    android:layout_centerVertical="true"
    android:onClick="terminate"
    android:text="0"
    android:textSize="45dp" />

<Button
    android:id="@+id/increase"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/quantity"
    android:layout_toStartOf="@+id/quantity"
    android:onClick="inc"
    android:padding="15dp"
    android:text="+"
    android:textSize="30dp"
    android:typeface="monospace" />

<Button
    android:id="@+id/decrease"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:onClick="dec"
    android:padding="15dp"
    android:text="-"
    android:textSize="30dp"
    android:typeface="monospace" />

这是MainActivity.java

public class MainActivity extends AppCompatActivity

{
int cups;
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

/**
 * This method is called when the order button is clicked.
 */
public void SubmitOrder(View view)
{
    display(cups);
    displayPrice(cups * 5);
}
public void inc(View view)
{
    cups = cups + 1;
    display(cups);
    displayPrice(cups * 5);
}
public void dec(View view)
{
    cups = cups - 1;
    display(cups);
    displayPrice(cups * 5);
}
/**
 * This method displays the given quantity value on the screen.
 */
private void display(int number)
{
    TextView quantityTextView = (TextView) findViewById(R.id.quantity);
    quantityTextView.setText("" + number);
}
/**
 * This method displays the given price on the screen.
 */
private void displayPrice(int number)
{
    TextView priceTextView = (TextView) findViewById(R.id.price);
(NumberFormat.getCurrencyInstance()格式(编号))

priceTextView.setText;     }

}

我已根据ShadowGod的回答更新了XML和MainActivity.java代码,但我仍面临同样的错误。

2 个答案:

答案 0 :(得分:0)

当我将XML放入测试项目并在模拟器中查看它看起来很好时,我可以看到所有按钮,所以我不知道那里有什么问题。

尝试在wrap_content的宽度中放入200dp而不是TextViews ..

我看到的另一个错误是,如果您在XML中使用onClick,则无法返回任何值或除了view之外还有其他任何参数。从XML Button onClick属性调用的方法必须具有此签名:

public void sendMessage(View view) {
    // Do something in response to button click
}

它无法返回任何内容,只会将View作为参数。

答案 1 :(得分:0)

我创建了一个新的android项目并复制了MainActivity.java 从旧的。 现在该应用程序工作正常。 这是新项目的链接:

https://github.com/shubhamsuryawanshi/coffee.git

感谢您的帮助:)