Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 27.07.2016
Сообщений: 5
1

Программно изменить ширину LinearLayout

17.08.2016, 16:13. Просмотров 1265. Ответов 5
Метки нет (Все метки)

Доброе время суток!
Есть галерея.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content">
<HorizontalScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent">
        <LinearLayout
            android:id="@+id/linearLayout"
            android:layout_width="500dp"
            android:layout_height="match_parent"
            android:orientation="horizontal">
            <GridView
                android:id="@+id/grid"
                android:layout_width="fill_parent"
                android:layout_height="130dp"
                android:layout_margin="4dp"
                android:columnWidth="100dp"
                android:gravity="center"
                android:numColumns="9"
                android:horizontalSpacing="1dp"
                android:scrollbarAlwaysDrawHorizontalTrack="true"
                android:scrollbarAlwaysDrawVerticalTrack="true"
                android:scrollbars="horizontal"
                android:stretchMode="none"
                android:verticalSpacing="1dp">
            </GridView>
        </LinearLayout>
    </FrameLayout>
</HorizontalScrollView>
</RelativeLayout>
Чтоб она нормально отображалась и прокручивалась LinearLayout задаю ширину 500dp (рассчитываю исходя из количества фоток).

Дальше я вставляю ее фрагментом где мне нужно.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:background="#ffff">
       <fragment
           android:id="@+id/fr_image_grid"
           android:name="com.nostra13.universalimageloader.sample.fragment.ImageGridFragment"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_gravity="center_horizontal" />
 
           .....
 
</RelativeLayout>
Так вот, я хочу использовать юту галерею в другом месте с другими фотками. Я вставляю фрагмент в другое место, передаю фотки, вроде все работает. Но у меня там не 5 фоток а больше, а так как длина у меня уже задана в 500dp, то в новой галереи только 5 фото отображаются.
Как мне изменить ширину LinearLayout?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.08.2016, 16:13
Ответы с готовыми решениями:

Программно изменить ширину layout-а в dp
Здравствуйте, подскажите пожалуйста, как программно изменить ширину layout-а в dp? Нашел...

Не могу изменить высотку и ширину Image программно
На экране есть компонент ImageView, в него загружается картинка из drawable(R.drawable.image_1)....

Поле список изменить программно ширину столбцов
Добрый вечер, есть поле список, которое формируется на основании запроса и состоит из 5 столбцов....

Как ПРОГРАММНО изменить ширину поля в отчете Access2003?
Здравствуйте. Как ПРОГРАММНО изменить ширину поля в отчете Access2003, например, при событии...

5
Модератор
3308 / 2099 / 333
Регистрация: 13.01.2012
Сообщений: 8,156
17.08.2016, 19:38 2
Skivs, а если просто не задавать ширину? пусть она будет такая какой ее назначат там где вставят
0
425 / 406 / 67
Регистрация: 06.10.2012
Сообщений: 1,748
17.08.2016, 20:24 3
Лучше и правда выставлять относительную ширину.
Но если надо, то
Java
1
2
3
4
5
6
7
    public static float convertDpToPx(final Context context, final float dp) {
        return dp * context.getResources().getDisplayMetrics().density;
    }
 
 
layout.getLayoutParams().width = convertDpToPx(getActivity(), 500);
layout.requestLayout();
0
0 / 0 / 0
Регистрация: 27.07.2016
Сообщений: 5
18.08.2016, 09:48  [ТС] 4
А как это сделать? Вообще не поставить ширину компилятор ругается, а если выставлять wrap_content или fill_parent то отображается только одна картинка. На код тоже ругается cannot resolve method 'getActivity' (я так понял потому что у меня галерея находится в фрагменте)
0
2870 / 2282 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
18.08.2016, 10:42 5
если у тебя при wrap_content показывает только одна картинка - ты делаешь что-то очень неправильно в коде и/или в разметке
без полного кода и полной разметки - гадание, занятие неблагодарное
0
0 / 0 / 0
Регистрация: 27.07.2016
Сообщений: 5
18.08.2016, 11:46  [ТС] 6
Я взял за основу пример из Android-Universal-Image-Loader убрал все лишние, немножко переделал и теперь просто хочу повторно использовать галерею в проекте.

fr_image_grid.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content">
<HorizontalScrollView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent">
        <LinearLayout
            android:id="@+id/linearLayout"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal">
            <GridView
                android:id="@+id/grid"
                android:layout_width="wrap_content"
                android:layout_height="130dp"
                android:layout_margin="4dp"
                android:columnWidth="100dp"
                android:gravity="center"
                android:numColumns="9"
                android:horizontalSpacing="1dp"
                android:scrollbarAlwaysDrawHorizontalTrack="true"
                android:scrollbarAlwaysDrawVerticalTrack="true"
                android:scrollbars="horizontal"
                android:stretchMode="none"
                android:verticalSpacing="1dp">
            </GridView>
        </LinearLayout>
    </FrameLayout>
</HorizontalScrollView>
</RelativeLayout>

ImageGridFragment.java
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package com.nostra13.universalimageloader.sample.fragment;
 
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.AbsListView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.listener.ImageLoadingProgressListener;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
import com.nostra13.universalimageloader.sample.Constants;
import com.nostra13.universalimageloader.sample.R;
import com.nostra13.universalimageloader.sample.activity.SimpleImageActivity;
 
public class ImageGridFragment extends Fragment {
    protected AbsListView listView;
    public static final int INDEX = 1;
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fr_image_grid, container, false);
        listView = (GridView) rootView.findViewById(R.id.grid);
        ((GridView) listView).setAdapter(new ImageAdapter(getActivity()));
        listView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                startImagePagerActivity(position);
            }
        });
        return rootView;
    }
 
    private void startImagePagerActivity(int position) {
        Intent intent = new Intent(getActivity(), SimpleImageActivity.class);
        intent.putExtra(Constants.Extra.FRAGMENT_INDEX, ImagePagerFragment.INDEX);
        intent.putExtra(Constants.Extra.IMAGE_POSITION, position);
        startActivity(intent);
    }
 
    private class ImageAdapter extends BaseAdapter {
 
        private String[] IMAGE_URLS = Constants.IMAGES;
 
        private LayoutInflater inflater;
 
        private DisplayImageOptions options;
 
        ImageAdapter(Context context) {
            inflater = LayoutInflater.from(context);
 
            options = new DisplayImageOptions.Builder()
                    .showImageOnLoading(R.drawable.ic_stub)
                    .showImageForEmptyUri(R.drawable.ic_empty)
                    .showImageOnFail(R.drawable.ic_error)
                    .cacheInMemory(true)
                    .cacheOnDisk(true)
                    .considerExifParams(true)
                    .bitmapConfig(Bitmap.Config.RGB_565)
                    .build();
        }
 
        @Override
        public int getCount() {
            return IMAGE_URLS.length;
        }
 
        @Override
        public Object getItem(int position) {
            return null;
        }
 
        @Override
        public long getItemId(int position) {
            return position;
        }
 
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            final ViewHolder holder;
            View view = convertView;
            if (view == null) {
                view = inflater.inflate(R.layout.item_grid_image, parent, false);
                holder = new ViewHolder();
                assert view != null;
                holder.imageView = (ImageView) view.findViewById(R.id.image);
                holder.progressBar = (ProgressBar) view.findViewById(R.id.progress);
                view.setTag(holder);
            } else {
                holder = (ViewHolder) view.getTag();
            }
 
            ImageLoader.getInstance()
                    .displayImage(IMAGE_URLS[position], holder.imageView, options, new SimpleImageLoadingListener() {
                        @Override
                        public void onLoadingStarted(String imageUri, View view) {
                            holder.progressBar.setProgress(0);
                            holder.progressBar.setVisibility(View.VISIBLE);
                        }
 
                        @Override
                        public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
                            holder.progressBar.setVisibility(View.GONE);
                        }
 
                        @Override
                        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                            holder.progressBar.setVisibility(View.GONE);
                        }
                    }, new ImageLoadingProgressListener() {
                        @Override
                        public void onProgressUpdate(String imageUri, View view, int current, int total) {
                            holder.progressBar.setProgress(Math.round(100.0f * current / total));
                        }
                    });
 
            return view;
        }
    }
 
    static class ViewHolder {
        ImageView imageView;
        ProgressBar progressBar;
    }
}


content_metal.xml сюда вставляю фрагмент
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:background="#ffff">
       <fragment
           android:id="@+id/fr_image_grid"
           android:name="com.nostra13.universalimageloader.sample.fragment.ImageGridFragment"
           android:layout_width="500dp"
           android:layout_height="wrap_content"
           android:layout_gravity="center_horizontal" />
</RelativeLayout>


activity_metal.xml
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context="com.nostra13.universalimageloader.sample.activity.Metal">
 
    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">
 
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay" />
 
    </android.support.design.widget.AppBarLayout>
 
    <include layout="@layout/content_metal" />
 
</android.support.design.widget.CoordinatorLayout>


Metal.java
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package com.nostra13.universalimageloader.sample.activity;
 
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.webkit.WebView;
 
import com.nostra13.universalimageloader.sample.R;
 
public class Metal extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_metal);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
        toolbar.setNavigationIcon(R.drawable.ic_keyboard_backspace_white_24dp);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }
 }
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2016, 11:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как программно изменить цвет ячейки и ширину столбцов в Excel
Здравствуйте, как можно программно изменить цвет ячейки в Excel? Я использую следующий код:...

Задать программно ширину столбцов DataGridView
Загружаю данные в DataGridView из Excel. Первые столбцы 0-2 всегда присутствуют им задаю в...

Программно задать ширину колонок DataGridView
Всем привет! Подскажите как программно задать ширину колонок DataGridView?

Программно изменить структуру (изменить название столбца) таблицы
Такое дело, друзья. Нужно программно изменить структуру(изменить название столбца) таблицы. То...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.