2015-09-16 34 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 –