Как получить ширину ImageButton - PullRequest
0 голосов
/ 09 сентября 2018

Как я могу получить ширину ImageButton, которая установлена ​​в XML в 0 и имеет размер от веса?

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginLeft="10dp"
    android:orientation="horizontal">

    <ImageButton
        android:id="@+id/fluido"
        android:layout_width="0dp"
        android:layout_height="70dp"
        android:layout_marginEnd="10dp"
        android:layout_marginRight="10dp"
        android:tint="@color/icon"
        android:layout_weight="0.33"
        app:srcCompat="@drawable/fluido" />

        <......../>

</LinearLayout>

Как получить это значение, которое было автоматически установлено с помощью weight ?

Как установлено в XML как 0 , если я сделаю: imageButton.getWidth(); или imageButton.getLayoutParams().width(); оба возвращают 0 как в XML.

Ответы [ 4 ]

0 голосов
/ 09 сентября 2018

Вы должны использовать addOnPreDrawListener

view.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener()
{
    @Override
    public boolean onPreDraw()
    {
        if (view.getViewTreeObserver().isAlive())
            view.getViewTreeObserver().removeOnPreDrawListener(this);

        // put your code here
        return false;
    }
});
0 голосов
/ 09 сентября 2018
Button button;
button = (Button) findViewById(R.id.button);

int buttonWidth = button.getWidth();

// Showing the Result
Toast.makeText(MainActivity.this, ""+buttonWidth, Toast.LENGTH_SHORT).show();

// Макет изображения enter image description here

// Результат

enter image description here

0 голосов
/ 09 сентября 2018

Это дает 0, потому что вы должны убедиться, что целое число, в котором вы храните ширину, не объявлено как окончательное.

Не должно быть так: Нажмите, чтобы увидеть изображение

0 голосов
/ 09 сентября 2018

Возможно использование нижеприведенного фрагмента:

yourView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

    @Override 
    public void onGlobalLayout() { 
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
            yourView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        } else {
            yourView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
        } 
        // Correct view dimensions are here:
        int width  = yourView.getMeasuredWidth();
        int height = yourView.getMeasuredHeight(); 
    } 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...