3

レイアウトファイルには次のものがあります。

    android:layout_width="100dp" 
    android:layout_height="wrap_content" android:layout_marginRight="10dp" 
    android:text="SYN" 
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:background="@drawable/rectanglepurple"
    android:textColor="#000000" 
    android:gravity="right"/>

私はコードを使用して次のことを達成しようとしていますが、これまでのところ:

Resources res = getResources();
Drawable drawable1=res.getDrawable(R.drawable.rectanglepurple);

TextView idText = new TextView(getActivity());
    idText.setText("SYN");
    idText.setTextAppearance(getActivity(), android.R.style.TextAppearance_Medium);
    idText.setTextColor(Color.BLACK);
    idText.setGravity(Gravity.RIGHT);
    idText.setBackgroundDrawable(drawable1);

対処方法がわからない

    android:layout_width="100dp" 
    android:layout_height="wrap_content" android:layout_marginRight="10dp" 

助けていただければ幸いです。

4

2 に答える 2

7

これはAndroidレイアウトの興味深い部分です。接頭辞がlayout_であるXMLプロパティは、実際には、含まれているビューマネージャー(LinearLayoutやRelativeLayoutなど)用です。したがって、次のようなものを追加する必要があります。

//convert from pixels (accepted by LayoutParams) to dp
int px = convertDpToPixel(100, this);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(px, LinearLayout.LayoutParams.WRAP_CONTENT);
//convert from pixels (taken by LayoutParams.rightMargin) to dp
px = convertDpToPixel(10, this);
params.rightMargin = px;
idText.setLayoutParams(params);

そして、convertDpToPixel(恥知らずに適応(floatではなくintを返すように変更)をピクセルの変換からdpに):

/**
* This method converts dp unit to equivalent device specific value in pixels.
*
* @param dp      A value in dp(Device independent pixels) unit. Which we need to convert into pixels
* @param context Context to get resources and device specific display metrics
* @return An integer value to represent Pixels equivalent to dp according to device
*/
public static int convertDpToPixel(float dp, Context context) {
    Resources resources = context.getResources();
    DisplayMetrics metrics = resources.getDisplayMetrics();
    int px = (int) (dp * (metrics.densityDpi / 160f));
    return px;
}

編集:rightMarginへの割り当てを10(ピクセル数)から変数px(10dpのピクセル数を含む)whoopsieに変更しました。

于 2012-10-11T22:26:20.700 に答える
0

あなたは見てみたいかもしれません

 setLayoutParams()

TextViewクラスのメソッド。--android docu

于 2012-10-11T22:22:40.603 に答える