我的布局中有一些按钮和一个微调器。我点击按钮播放音乐。按下按钮后,按钮文本将对齐到左侧。我不知道为什么会这样。如果我注释按钮单击侦听器,然后如果我在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
}
});
答案 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=" "
使用此选项将所选项目对齐到所需位置。