Вид с одинаковой шириной и высотой - PullRequest
1 голос
/ 30 октября 2011

то, что я хочу сделать в представлении, это иметь текстовое представление и справа от него иметь другое настраиваемое представление X с той же высотой, что и у текстового представления, и иметь ширину = высоту:

+---------------------+---+
|A flexible string    | X |
+---------------------+---+

Моя попытка до сих пор:

Внутри X класса:

@Override
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) {
    int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
    setMeasuredDimension(height,height);
    Log.v("measure","width:"+height + " height:"+height);
}

и мой xml:

<RelativeLayout
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content">

    <TextView android:id="@+id/mytext"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentLeft="true"/>

    <mystuff.X
     android:layout_width="wrap_content"
     android:layout_height="fill_parent"
     android:layout_toRightOf="@id/mytext"/>

</RelativeLayout>

Оператор журнала печатает:

width:1073741823 height:1073741823
width:37 height:37
width:1073741823 height:1073741823
width:37 height:37
width:1073741823 height:1073741823
width:37 height:37

когда представление создано и оно занимает всю ширину экрана:

+---------------------+-----------------+
|A flexible string    |      X          |
+---------------------+-----------------+

Я был бы очень признателен за любую помощь в этом. Спасибо! Ian

1 Ответ

5 голосов
/ 30 октября 2011

Вы рассматриваете характеристики измерения как фактические пиксели.Фактически это целые числа, которые представляют "fill_parent", "wrap_content" и т. Д.

Что вы хотите сделать, это:

@Override
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) {
    int height = getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec);
    setMeasuredDimension(height,height);
    Log.v("measure","width:"+height + " height:"+height);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...