2016-08-05 42 views
0

我正嘗試使用LayoutInflater從xml佈局創建一些自定義視圖。LayoutInflater不能正確顯示xml

MainActivity:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     LinearLayout layout = (LinearLayout) findViewById(R.id.t1); 

     Widget w = new Widget(getApplicationContext()); 

     layout.addView(w.getView()); 
    } 

的Widget:

private Context context; 
    public Widget(Context context) { 
     this.context = context; 
    } 

    public View getView(){ 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = inflater.inflate(R.layout.widget, null); 
     ((Button)view.findViewById(R.id.button)).setText("button"); 
     ((TextView)view.findViewById(R.id.textView)).setText("text"); 

     return view; 
    } 

widget.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button" 
     android:id="@+id/button" 
     android:layout_gravity="center_horizontal" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:text="Large Text" 
     android:id="@+id/textView" 
     android:layout_gravity="center_horizontal" /> 
</LinearLayout> 

但我有兩個問題:

  1. 活動僅顯示沒有TextView的按鈕。

  2. 按鈕具有黑色和白色文本,但在預覽中它具有灰色和黑色文本。

我該如何解決這些問題?

回答

1

也許你必須改變你的res/values/styles.xml參數。 使用Android Studio 2.0,您可以使用主題編輯器。相當不錯,如果你不需要特殊的按鈕等。

或者你可以爲每個視圖添加自定義的colos。例如,在您的文本視圖中添加

android:textColor="@color/yourcolor1" 
android:background="@color/yourcolor2" 

。 RES /價值/ colors.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<color name="yourcolor1">#FFFFFF</color> 
<color name="yourcolor2">#CCCCCC</color> 
</resources> 

更改按鈕屬性太像這樣(只是舉例):

android:textColor="@android:color/black" 
android:background"@android:color/darker_gray" 
+0

謝謝,這個問題是由於色彩。我在哪裏可以檢查視圖的默認樣式(我在打開佈局時看到的樣式,例如帶有黑色文本的灰色按鈕)? –

+0

找到解決方案:http://stackoverflow.com/a/2119625/2656632 –