Используя Android Studio, почему отображение TextView, содержащееся в виджете LinearLayout, усекается?

Я хочу извлечь следующую часть «дисплея» в виде изображения в файл PNG.

<LinearLayout
       android:layout_width = "match_parent"
       android:layout_height = "match_parent"
       android:id = "@+id/Layout">
       <FrameLayout xmlns:android = "http://schemas.android.com/apk/res/android"
           android:layout_width = "fill_parent"
           android:layout_height = "fill_parent">
           <ImageView
               android:layout_width = "match_parent"
               android:layout_height = "fill_parent"
               android:id = "@+id/Image_view"
               />

           <TextView
               android:id = "@+id/text_view1"
               android:layout_width = "wrap_content"
               android:layout_height = "wrap_content"
                />
       </FrameLayout>

   </LinearLayout>

Для этого я использую следующий код

list.add("Raghul s");
list.add("Name 2");
list.add("Name 3");
for(int i=0;i<list.size();i++)
{
LinearLayout view = (LinearLayout) findViewById(R.id.Layout);
txt = (TextView) findViewById(R.id.Text_View1);

txt.setText(list.get(i));

view.setDrawingCacheEnabled(true);
view.buildDrawingCache(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);

bs = new ByteArrayOutputStream();
bs.compress(Bitmap.CompressFormat.PNG, 40, bitmap);

try {
    file = new File("Image.png");
    file.createNewFile();
    ws = new FileOutputStream(file);
    ws.write(bs.toByteArray());
    ws.close();
    } 
catch (Exception e)
    {
    e.printStackTrace();
    }
 }

Когда я выполняю этот код, я получаю изображение PGN, где слово Raghul частично усечено, как на следующем изображении.

Используя Android Studio, почему отображение TextView, содержащееся в виджете LinearLayout, усекается? Для имени 2 и имени 3:

Используя Android Studio, почему отображение TextView, содержащееся в виджете LinearLayout, усекается?

Что происходит ?

Почему «Рагул с» и «имя 2» усечены?

Как решить эту проблему?

В Android Studio. Пожалуйста, дайте любой код, чтобы правильно сохранить изображение со всем текстом.

Raghul S 09.03.2019 07:47

Привет Рагул, добро пожаловать в переполнение стека. Я "руководитель" и я должен принять ваш вопрос, и я ничего не понимаю в вашем вопросе! Не могли бы вы дать несколько строк вашего кода, ограниченных вашей проблемой, чтобы другие пользователи могли понять вашу проблему и помочь вам. Если чтение части файла не важно, удалите его для объяснения. Что такое «полный макет»? Можете ли вы добавить несколько пустых строк в свой вопрос, чтобы он был более читабельным?

schlebe 09.03.2019 08:03

я пытаюсь сохранить макет как изображение, поэтому я упоминаю его как весь макет

Raghul S 09.03.2019 08:48

Я не понимаю вашу проблему, потому что она плохо объяснена! Пожалуйста, приложите усилия и сделайте то, что я объяснил в своем первом комментарии. Вы уверены, что хотите получить помощь? Следуйте моему совету! Приведите несколько строк кода, чтобы показать, что вы уже работали над этой проблемой. Остальные здесь не для того, чтобы работать у вас дома. Этот сайт действительно отличный и веселый. Если вы разместите какой-нибудь код, я, возможно, смогу понять вашу проблему и помочь вам написать хороший вопрос, помочь вам узнать, как использовать все возможности форматирования StackOverflow.

schlebe 09.03.2019 08:57

выше мой код

Raghul S 09.03.2019 09:06

Хорошо спасибо. Это начало. Теперь вы можете добавить объявление/определение переменной text_View и переменной list? Я продолжаю читать ваш код... Можете ли вы также добавить объявление класса или переменной R? Я вернусь позже

schlebe 09.03.2019 10:32

Я также добавил декларации, сэр.

Raghul S 10.03.2019 06:01

Спасибо. Теперь я отформатировал ваш вопрос, чтобы он был более читабельным для меня, и я надеюсь, что для других. Пожалуйста, я не разработчик Android Java, но я думаю, что ВАШЕ XML-определение LinearLayout и TextView отсутствует в вашем исходном вопросе. Я добавил образец. Можете ли вы снова отредактировать свой вопрос, чтобы правильно заполнить эту часть. Я скрыл ваше объяснение о входном файле и списке строк, потому что вашу проблему можно объяснить без этой части, потому что ваша проблема в другом. В следующий раз, когда вы зададите вопрос, избегайте давать слишком много объяснений, когда в них нет необходимости.

schlebe 10.03.2019 08:02

Чтобы поместить изображение, просто вставьте/скопируйте изображение в свой вопрос. Я не знаю, как это делает StackOverflow; но это гениально по сравнению с другими сайтами, которые я знаю.

schlebe 10.03.2019 08:04

Извините, но я забыл сказать. Я изменил имена некоторых переменных, чтобы код был короче, чтобы код был более удобочитаемым, а также чтобы избежать путаницы между именем переменной и именем типа переменной. Можете ли вы проверить, всегда ли преобразованный код равен вашему первому опубликованному коду?

schlebe 10.03.2019 08:09

Здравствуйте Рагул. Спасибо, я вижу, что вы завершили свой XML-код. Я думаю, что вы также добавили «имя-2», но это не соответствует изображению в вашем вопросе, которое содержит только Rag! Чтобы быть правильным, я предлагаю вам удалить «имя-2» в вашем тексте или добавить «нам» в ваше изображение :-), но не смесь 2.

schlebe 10.03.2019 18:35

Теперь, чтобы решить вашу проблему, я предлагаю вам назначить цвет фона для всех элементов в вашем XML-файле. Вы можете использовать следующую страницу, чтобы сделать это stackoverflow.com/questions/5576822/…. Все виджеты, даже LinearLayout, должны иметь свой цвет. Когда это будет сделано, мне интересно посмотреть, что содержит ваш файл PNG. Следующая ссылка, безусловно, может помочь вам найти решение stackoverflow.com/questions/432763/…

schlebe 10.03.2019 18:46
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
12
84
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Есть 3 возможности проверить, правильно ли то, что я вижу, или нет.

A. вы удаляете виджет ImageView и заменяете wrap_content в TextView на match_parent

B. вы добавляете следующее свойство в виджет TextView

android:text = "xxxxxxxxxx"

C. вы обновляете LinearLayout с помощью view.invalidate() после назначения TextView с помощью следующего кода:

txt.setText(list.get(i));
view.invalidate();

Я думаю (без тестирования), что последняя команда решит вашу проблему.

Я добавил эту возможность

D. вы можете раскрасить ВСЕ виджеты, присутствующие в LinearLayout, и посмотреть, что произойдет. Сделав это, мы сможем увидеть ширину всех виджетов и, возможно, сможем лучше понять вашу проблему.

Сэр, снова повторяется та же проблема... Пожалуйста, помогите мне с некоторыми другими методами.

Raghul S 13.03.2019 18:19

Я разработчик C++, Java и VB.Net, и я пытаюсь помочь вам, потому что я уже работал с растровым изображением в C++ и VB.net, и ваша проблема, похоже, связана с тем, что действительно отображается. Я добавил еще одну возможность, чтобы попытаться понять, что происходит, можете ли вы попробовать и отправить мне результат. Я добавляю это сейчас.

schlebe 13.03.2019 19:04

Вы пытались раскрасить все свои виджеты?

schlebe 15.03.2019 12:33

Хорошо, но не могли бы вы сообщить результат своего вопроса, чтобы мы могли увидеть, что вы получили!

schlebe 16.03.2019 16:09

Я понял ... спасибо, сэр, за то, что подали мне идею

Raghul S 16.03.2019 18:21

Привет, Рагул, ты принял мой ответ как лучший, но мой ответ неполный. Вы нашли решение? Если ДА, можете ли вы объяснить в новом комментарии, как вы решили свою проблему?

schlebe 17.03.2019 16:56

Сэр, в текстовом представлении я раньше использовал только «имя». Затем я изменил его на 10 букв, например: «xxxxxxxxxx», вот так я случайно набрал какую-то букву. После этого я понимаю.

Raghul S 18.03.2019 18:29

Ok. Я вижу, что ваша проблема решена. Но можете ли вы объяснить, почему или как вы ее решили. В StackOverflow важно знать, что происходит, чтобы другие пользователи, столкнувшиеся с той же проблемой, могли использовать ваш вопрос и мой ответ для решения своей проблемы. Вы, безусловно, изменили что-то важное, и только вы знаете, что вы изменили. Можете ли вы найти, что вы изменили, и можете ли вы найти некоторые пояснения для других пользователей?

schlebe 18.03.2019 19:35

Другие вопросы по теме