Android按钮失去了文本对齐方式

时间:2013-11-04 08:12:37

标签: android android-layout

我的布局中有一些按钮和一个微调器。我点击按钮播放音乐。按下按钮后,按钮文本将对齐到左侧。我不知道为什么会这样。如果我注释按钮单击侦听器,然后如果我在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

    }
});

3 个答案:

答案 0 :(得分: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"/>

编辑:上面的答案提供了一个解决方案,可以保持按钮文本的中心水平,但是当我测试时,它们的文本会向上移动。我搜索了一会儿,发现similar problem (not answered yet) at stack。我想在Spinner中使用RelativeLayout s(或对话框)时会出现一个小错误。我尝试在下面更改您的布局(将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>

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

这里Spinner有一个标签

android:gravity="   "

使用此选项将所选项目对齐到所需位置。