1

我的布局中有一些按钮和一个微调器。我在按钮单击时播放音乐。当 Button 被按下时,按钮文本左对齐。我不知道为什么会这样。如果我评论按钮单击侦听器,然后如果我更改 Spinner 中的项目,那么它也会左对齐。

这是我的代码的一部分。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true" >

        <Spinner
            android:id="@+id/spnList"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:padding="5dp" >

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <Button
                android:id="@+id/btnCall"
                android:layout_weight="1"
                android:text="C" />

            <Button
                android:id="@+id/btnCut"
                android:layout_weight="1"
                android:text="X" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <Button
                android:id="@+id/btn1"
                android:layout_weight="1"
                android:text="1" />

            <Button
                android:id="@+id/btn2"
                android:layout_weight="1"
                android:text="2" />

            <Button
                android:id="@+id/btn3"
                android:layout_weight="1"
                android:text="3" />
        </TableRow>
    </TableLayout>

</RelativeLayout>

这是活动代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main1);
    btn1 = (Button) findViewById(R.id.btn1);
    btn2 = (Button) findViewById(R.id.btn2);
    btn3 = (Button) findViewById(R.id.btn3);
    spnList = (Spinner) findViewById(R.id.spnList);
    List<String> list = new ArrayList<String>();
    list.add("First");
list.add("Second");

ArrayAdapter<String> adapter = new ArrayAdapter<String>(
        BabyMobile1.this, android.R.layout.simple_spinner_item, list);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

spnList.setAdapter(adapter);
spnList.setOnItemSelectedListener(new OnItemSelectedListener() {

    public void onItemSelected(AdapterView<?> arg0, View arg1,
            int arg2, long arg3) {
        // TODO Auto-generated method stub
    activeItem = (String) arg0.getItemAtPosition(arg2);
}

public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

    }
});
4

3 回答 3

1

您没有在按钮上定义宽度和高度属性。尝试添加以下属性。

android:layout_width="0dp"
android:layout_height="wrap_content"

例子:

<Button
    android:id="@+id/btnCall"
    android:layout_weight="1"
    android:text="C" 
    android:layout_width="0dp"
    android:layout_height="wrap_content"/>

编辑:上面的答案提供了一种解决方案,可以使按钮的文本保持水平居中,但在我测试时它们的文本会向上移动。我搜索了一段时间,在 stack 发现了类似的问题(尚未回答)。我猜SpinnerRelativeLayout. 我试图在下面更改您的布局(将 root 更改为LinearLayout)并且它按预期工作。如果您有机会用我的(下)替换您的布局,您的问题将得到解决。但我不知道为什么使用RelativeLayout会导致这样的问题。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Spinner
            android:id="@+id/spnList"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btnCall"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="C" />

            <Button
                android:id="@+id/btnCut"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="X" />
        </TableRow>

        <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <Button
                android:id="@+id/btn1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="1" />

            <Button
                android:id="@+id/btn2"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="2" />

            <Button
                android:id="@+id/btn3"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="3" />
        </TableRow>
    </TableLayout>

</LinearLayout>
于 2013-11-04T10:26:16.743 回答
0

检查此链接它可能会对您有所帮助。

http://developer.android.com/reference/android/widget/Spinner.html#attr_android:gravity

在 Spinner 中有一个标签

android:gravity="   "

使用它在所需位置对齐所选项目。

于 2013-11-04T09:41:19.090 回答
0

检查按钮和微调器的对齐方式,如果您在微调器中使用自定义项目,那么您还应该检查自定义项目对齐方式。

更好地理解目的给我你正在写的代码以及你在哪里遇到问题?

于 2013-11-04T09:07:11.133 回答