1

レイアウト クラスを拡張して、独自の UI コンポーネント クラスを作成しています。高さ、幅などのカスタム属性を文字列 xml リソースに別の xml として追加する代わりに、Activityクラス自体で定義したいと考えています。xml に追加して、コード内の R クラスから参照したくありません。コード自体で属性を定義してアクセスする方法はありますか?

4

1 に答える 1

0

以下は、Pro Android 4 のコード サンプルです。

import android.app.Activity; 
import android.os.Bundle; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.LinearLayout; 
import android.widget.TextView; 
public class MainActivity extends Activity 
{ 
private LinearLayout nameContainer; 

private LinearLayout addressContainer; 

private LinearLayout parentContainer; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    createNameContainer(); 

    createAddressContainer(); 

    createParentContainer(); 

    setContentView(parentContainer); 
} 

private void createNameContainer() 
{ 
    nameContainer = new LinearLayout(this); 

    nameContainer.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
            LayoutParams.WRAP_CONTENT)); 
    nameContainer.setOrientation(LinearLayout.HORIZONTAL); 

    TextView nameLbl = new TextView(this); 
    nameLbl.setText("Name: "); 

    TextView nameValue = new TextView(this);
    nameValue.setText("John Doe"); 

    nameContainer.addView(nameLbl); 
    nameContainer.addView(nameValue); 
} 

private void createAddressContainer() 
{ 
    addressContainer = new LinearLayout(this); 

    addressContainer.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
            LayoutParams.WRAP_CONTENT)); 
    addressContainer.setOrientation(LinearLayout.VERTICAL); 

    TextView addrLbl = new TextView(this); 
    addrLbl.setText("Address:"); 

    TextView addrValue = new TextView(this); 
    addrValue.setText("911 Hollywood Blvd"); 

    addressContainer.addView(addrLbl); 
    addressContainer.addView(addrValue); 
} 

private void createParentContainer() 
{ 
    parentContainer = new LinearLayout(this); 

    parentContainer.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 
            LayoutParams.FILL_PARENT)); 
    parentContainer.setOrientation(LinearLayout.VERTICAL); 

    parentContainer.addView(nameContainer); 
    parentContainer.addView(addressContainer); 
} 
}

その他の機能については、これらも参照してください。

レイアウト パラメータ リニア レイアウト

ViewGroup レイアウト パラメータ

StackOverflow 設定レイアウト パラメータ

于 2012-06-07T10:13:11.453 に答える