我按照
Android推荐,将style =“?android:attr / buttonBarStyle”设置为父布局,并将style =“?android:attr / buttonBarButtonStyle”设置为按钮.
所以现在我的布局是这样的:
所以现在我的布局是这样的:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" style="?android:attr/buttonBarStyle"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 1" style="?android:attr/buttonBarButtonStyle"/> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 2" style="?android:attr/buttonBarButtonStyle"/> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 3" style="?android:attr/buttonBarButtonStyle"/> </LinearLayout>
但在设置样式后,这些按钮已变得不可见,但我仍然可以单击它们.
请告诉我有什么问题.
编辑:其他详细信息
好吧,我刚刚创建了一个专门用于测试这种布局的新项目,令人惊讶的是它确实有效.
所以更确切地说,实际上,我动态地将这个布局添加到另一个布局,如下所示:
<LinearLayout 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:orientation="vertical"> <LinearLayout android:id="@+id/buttons_panel_container" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> </LinearLayout> <!-- some other stuff --> </LinearLayout>
码:
LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); LinearLayout buttonsPanelContainer = (LinearLayout) findViewById(R.id.buttons_panel_container); View buttonPanelView = null; if(chosenValueType.equals("some_type")) { buttonPanelView = layoutInflater.inflate(R.layout.some_buttons_panel,null); Button Button1 = (Button) buttonPanelView.findViewById(R.id.button1); Button1.setOnClickListener(this); Button Button2 = (Button) buttonPanelView.findViewById(R.id.button2); Button2.setOnClickListener(this); } else if (chosenRawValueType.equals("another_type") { //... ViewGroup insertPoint = (ViewGroup) buttonsPanelContainer; insertPoint.addView(buttonPanelView,new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));
很抱歉没有提到它,我不认为可能是这种情况.
那有什么不对?
解决方法
我只需要使用
LayoutInflater layoutInflater = LayoutInflater.from(this);
代替
LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);