2015-09-16 21 views
0

我从头开始创建了两个应该产生相同结果的项目:几个带特殊样式的按钮。

第一个项目:

activity_main.xml中动态添加视图导致样式问题

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/buttons_panel_container" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <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> 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

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

    // default menu part 
} 

第二个项目:

activity_main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/buttons_panel_container" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

</LinearLayout> 

buttons_panel.xml

<?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="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> 

MainActivity.java

public class MainActivity extends AppCompatActivity { 

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

     LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     LinearLayout buttonsPanelContainer = (LinearLayout) findViewById(R.id.buttons_panel_container); 

     View buttonPanelView = null; 

     buttonPanelView = layoutInflater.inflate(R.layout.buttons_panel, null); 

     ViewGroup insertPoint = (ViewGroup) buttonsPanelContainer; 
     insertPoint.addView(buttonPanelView, 0, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
    } 

    // default menu part 
} 

第一个项目工作,它应该=>所有按钮都可见,适当的风格和点击。
第二个项目中的按钮是隐形,虽然可点击。

请别人告诉我为什么动态创建布局会导致样式问题?

回答

1

您不应该使用应用程序上下文使用活动上下文来取得LayoutInflater(应用程序上下文不是主题)。在你的情况下,它将只是LayoutInflater.from(this)

+0

令人惊叹!非常感谢! Upvoted –